Ari*_*lam 3 php codeigniter codeigniter-2
我正在使用版本2.1.0的CodeIgniter.我想使用Hooks进行登录验证.这意味着我希望在每个控制器中检查会话数据是否已登录.所以我想使用钩子.我这样做的代码如下:
$config['enable_hooks'] = TRUE;
Run Code Online (Sandbox Code Playgroud)
hooks.php$hook['post_controller_constructor'][] = array(
'class' => 'SessionData',
'function' => 'initializeData',
'filename' => 'loginHelper.php',
'filepath' => 'hooks',
'params' => array()
);
Run Code Online (Sandbox Code Playgroud)
loginHelper.phpclass SessionData{
var $CI;
function __construct(){
$this->CI =& get_instance();
}
function initializeData() {
// This function will run after the constructor for the controller is ran
// Set any initial values here
if (!$this->session->userdata('username')) { // This is line 13
redirect('login');
}
}
}
Run Code Online (Sandbox Code Playgroud)
但它会引发以下错误:
A PHP Error was encountered
Severity: Notice
Message: Undefined property: SessionData::$session
Filename: hooks/loginHelper.php
Line Number: 13
Run Code Online (Sandbox Code Playgroud)
我怎么解决这个问题?
" 在系统执行期间很早就调用.此时只加载了基准测试和钩子类... "
您应该手动加载在Hook中使用的所有库和模型:
if (!isset($this->CI->session))
{
$this->CI->load->library('session');
}
Run Code Online (Sandbox Code Playgroud)
并使用$this->CI->session->userdata()而不是$this->session->userdata().
| 归档时间: |
|
| 查看次数: |
12368 次 |
| 最近记录: |