【发布时间】:2020-01-08 03:50:39
【问题描述】:
当我加载会话库时只显示 找不到指定的类:Session.php 这是代码
$ci =& get_instance();
$ci->load->database();
$ci->load->library('session');
if($ci->session->userdata('loggedin')){
if($ci->session->userdata('owner_id')==0){
$query = $ci->db->query("SELECT * FROM system WHERE user_id=".$ci->session->userdata('id')." LIMIT 1");
}else{
$query = $ci->db->query("SELECT * FROM system WHERE user_id=".$ci->session->userdata('owner_id')." LIMIT 1");
}
}else{
$query = $ci->db->query("SELECT * FROM system WHERE id=1 LIMIT 1");
}
【问题讨论】:
-
如果 'Session.php' 是一个库,你为什么要这样加载它?为什么不通过默认的框架加载方式加载?
-
我无法访问 Session。有没有不带load方法的代码访问Session?
-
是的。事实上,你应该在 'config/autoload.php' 中加载会话库,并正常调用 '$ci->session->userdata('item_name')',一旦钩子它也是 CI 的一部分。请记住:作为框架(而不是应用程序)的一部分,HOOK 期望已加载所有内容,而不是加载库的正确位置。
-
@ShutUpMagda 我同意你的看法,但自动加载也不起作用。所以你能告诉我在加载任何功能之前如何使用会话项吗?实际上我需要检查用户登录,如果登录从数据库中获取一些信息,然后将配置设置为应用程序。你知道其他方法吗?
-
没有别的办法。我不知道你为什么在
pre_controller中需要这个,但请记住,此时某些功能还没有完全加载。考虑切换到post_controller_constructor,这似乎更适合您的需求。
标签: php codeigniter session