आपने सिर पर कील ठोक दी है, लेकिन इसे करने का थोड़ा और कारगर तरीका है।
आधार नियंत्रकों को एक तरह से बढ़ाएं (मेरा मानना है कि मूल रूप से फिल स्टर्जन द्वारा उल्लिखित) लेकिन मैं यहां संक्षेप में बताऊंगा:
देखें यह लेख बहुत गहराई से लिखने के लिए।
लेकिन संक्षेप में:
<?php
class MY_Controller extends Controller
{
function __construct()
{
parent::Controller();
if (! $this->session->userdata('first_name'))
{
redirect('login'); // the user is not logged in, redirect them!
}
}
}
तो अब अगर आप पहुंच को प्रतिबंधित करना चाहते हैं, तो बस:
class Secret_page extends MY_Controller {
// your logged in specific controller code
}
और विस्तारित नियंत्रक स्वचालित रूप से जांच करेगा कि उपयोगकर्ता कंस्ट्रक्टर में लॉग इन है या नहीं।
कैसे के लिए, मैं शायद user_id को यह जांचने के लिए मान के रूप में सेट करता हूं कि यह सेट है, या शायद उपयोगकर्ता "समूह" - तो आप अपने सिस्टम में उपयोगकर्ता अनुमतियां और पहुंच के विभिन्न स्तरों को प्राप्त कर सकते हैं।
आशा है कि इससे थोड़ी मदद मिलेगी।
संपादित करें
इसे application/config.php में जोड़ें
/*
| -------------------------------------------------------------------
| Native Auto-load
| -------------------------------------------------------------------
|
| Nothing to do with cnfig/autoload.php, this allows PHP autoload to work
| for base controllers and some third-party libraries.
|
*/
function __autoload($class)
{
if(strpos($class, 'CI_') !== 0)
{
@include_once( APPPATH . 'core/'. $class . EXT );
}
}
चूंकि आप CI 2.0 का उपयोग कर रहे हैं, इसलिए आपको MY_Controllers को लाइब्रेरी के बजाय एप्लिकेशन/कोर के अंदर रखना होगा।
मेरा एप्लिकेशन/कोर कुछ इस तरह दिखता है:
Admin_Controller.php
MY_Controller.php
Public_Controller.php