我无法解决Codeigniter存在的问题。当我成功登录并创建必要的会话变量时,下一个请求中的重定向无法检索这些变量。 $ _SESSION var没有它们!会话数据不会传播到下一个请求
这只是执行的代码,当有人提交用户名和密码登录:
$data = array(
'user' => $this->input->post('user'),
'password' => $this->input->post('password'),
);
// Trying to log in
try{
// Validation ....
// Users instance creation ....
$this->user = (...)
// Last action before the redirection
$this->session->set_userdata(array(
'user' => serialize($this->user),
'logged_in' => true,
'last_access' => time(),
'session_max_time' => config_item('app_sess_expiration'),
));
// At this point, if I do a var_dump($_SESSION), it will display all my session variables as expected.
redirect(base_url());
}
catch (Exception $e) {
// Not reaching this code
$data['error'] = $e->getMessage();
redirect_to_login();
}
现在,如果我的var_dump($ _ SESSION)在系统在session_start()之后/库/会话/ session.php文件它只会显示,在重定向请求:
Array
(
[__ci_last_regenerate] => 1499021453
)
我自己的会话变量丢失!
我检查了,每次我尝试验证,创建一个新的会话变量:
[email protected] ~ $ ls -la /opt/lampp/temp
total 20312
drwxrwxrwx 2 daemon daemon 24576 jul 2 21:16 .
drwxr-xr-x 30 root root 4096 jun 19 22:37 ..
-rw------- 1 daemon daemon 20735126 jun 20 22:14 phpjtS2zn
-rw------- 1 daemon daemon 34 jul 2 20:50 session_myapp51697449f5b8d526ee2cce05a5149135e3c1d74f
-rw------- 1 daemon daemon 785 jul 2 21:16 session_myapp72d8e8c189283c1d5c5d4ed60d7dd58ed5d9d69c
-rw------- 1 daemon daemon 34 jul 2 21:16 session_myapp9a97c65cda1c846028fc3035abe5023a73cf974b
-rw------- 1 daemon daemon 34 jul 2 21:16 session_myappf122822e7c8887b14239eb9e97d70266d47c658b
-rw------- 1 daemon daemon 14891 jul 2 21:15 sess_50fbaf84f2b49bf7c176b8c0396c099e
我不知道,如果该文件的权限可能有事情做。我为temp目录中的所有用户授予了读取权限,但所有会话文件都是使用所有者权限创建的。不过,我认为守护进程也是运行过程的所有者,不是吗?所以应该检索会话文件。
编辑1:
这是我的会议config.php文件
$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'session_myapp';
$config['sess_expiration'] = 0;
$config['sess_save_path'] = "/opt/lampp/temp";
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 30;
$config['sess_regenerate_destroy'] = FALSE;
你有没有关于使用codeigniter表单验证https://www.codeigniter.com/user_guide/libraries/form_validation.html – user4419336
CI会话是独立于PHP会话。它们存储在您定义的文件或数据库表中。那么你的config.php文件中的CI Sessions配置设置是什么? – TimBrownlaw
@TimBrownlaw我使用文件存储选项。我已经按照您的要求添加了会话配置行。 –