因此,我设置了一个验证用户凭据的登录页面,然后设置codeigniter会话数据'email'和'is_logged_in'以及其他一些项目 . 登录后的第一页,可以访问数据 . 在该页面之后,我无法再访问会话数据 . 事实上,如果我尝试重新加载第一页,会话数据就会消失 .
我已经尝试将其存储在数据库中,将其存储为未加密的(我知道这是个坏主意,但它是用于故障排除),并将其加密存储 . 我在config.php中自动加载了会话库 .
这是我用来设置会话数据的代码示例:
$data = array(
'email' => $this->input->post('username'),
'is_logged_in' => true
);
$this->session->set_userdata($data);
要检索它,我正在使用:
$this->session->userdata('email');
要么
$this->session->userdata('is_logged_in');
我以前用PHP和cookie以及会话做了很多工作,但这是我与Codeigniter的第一个项目,我感到很困惑 .
它可能与目录问题有关吗?我有登录页面和进程由“登录”控制器控制,然后它重定向到“站点”控制器 .
感谢您的帮助,如果我需要澄清任何问题,请告诉我 .
7 回答
你的代码看起来很好 . 我在Codeigniter的会话库中遇到了很多问题,包括类似于你提到的内容 .
考虑查看Native Session库以解决您的问题 .
正因为如此,试图使用CI会话的任何人都可以尝试:
我一直在寻找同样问题的解决方案,经过多次死胡同,我重新调查了我的
config.php
.其中,我注意到
$config['cookie_domain']
未正确设置 . 设置此项(并将我的cookie_prefix
设置为''
)后,会话现在可以正常工作 .由于需要将cookie设置为您的域才能正确提取,因此根本没有为我的会话找到cookie引用,并且每次都创建一个新的 .
(设置数据库会话非常有助于搞清楚这一点 . )
如果有人遇到此问题,请转到config / config.php并确保
$config['sess_use_database']
设置为TRUE . 这会将所有会话数据保存到您的数据库 - 这对我有用 .如果您没有名为'sessions'的表,请运行以下SQL命令:
我也是代码点火器的新手 . Juz给出了一个主意 . 你把session_start()放在控制器里了吗?这是一个例子:
Cuser扩展Controller {
}
也许我错了......但你可以尝试一下...... :)
请注意检查您的cookie名称 . 它不能有点 .
坏 Cookies :.domain.com
好的cookie:domaincom
为什么你不使用ion auth来获得安全性和会话数据......当我想用登录创建一个软件时,我总是使用它 . 您还需要在数据库中使用名称会话创建一个表 . 然后转到Config文件夹中的配置和数据库文件,并将true设置为数据库所需的会话 . 你没有读好文档
ubuntu中的Codeigniter 3.0仅显示数组([__ci_last_regenerate] => 1522220387)..其余会话不显示enter image description here