2010-07-13 45 views

回答

3

您的验证检查应在库:

的是从一个基本的codigniter authentcation脚本摘录:命名后的文件名

class Site_sentry 
{ 
    function Site_sentry() 
    { 
     $this->obj =& get_instance(); 
    } 

function is_logged_in() 
{ 
    if ($this->obj->session) 
    { 
     if ($this->obj->session->userdata('session_logged_in')) 
     { 
      return TRUE; 
     } 
     else 
     { 
      return FALSE; 
     } 
    } 
    else 
    { 
     return FALSE; 
    } 
} 

    function login_routine() 
    { 
    //do login here (enter into session) 
    } 
} 

此库存储在应用程序/库它的类与.php后缀。

然后你就可以添加到您的自动加载配置文件应用/ conig/config.php文件

$autoload['libraries'] = array('database', 'site_sentry', 'session'); 

或在每个控制器手动加载:

$this->load->library('Site_sentry); 

然后你就可以从控制器中检查您的会话,如下所示:

class Class extends Controller{ 

    function Class() 
    { 
     parent::Controller(); 
     if($this->site_sentry->is_logged_in() == FALSE){ 
      redirect('managerlogin/'); 
     } 

    } 
    } 

另请参阅本文档页面http://codeigniter.com/user_guide/libraries/sessions.html;特别感兴趣的是将会话存储到数据库部分。

+0

非常感谢你 – Saqueib 2010-07-13 10:17:31

0

我不认为与类做是最好的主意的第一个项目。如果用户登录,您应该检查session内的标志(值或其他),因此您不需要与其他控制器一起工作。

优点是可以更容易地访问会话,这是更常见的方法。

+0

如果有人downvotes,至少说为什么... – DrColossos 2010-07-13 07:19:58

0

实例与会话:

class SomeClass extends Controller { 

function __construct() 
{ 
    parent::Controller(); 
    $this->is_logged_in(); 
} 

function is_logged_in() 
{ 

    $is_logged_in = $this->session->userdata('is_logged_in'); 
    if(!isset($is_logged_in) || $is_logged_in != TRUE) 
    { 
     redirect('login'); 
    } 
} 
相关问题