public function logout()
{
$this->my_auth_lib->logout();
$this->session->set_flashdata('alert','You have been logged out!');
// 不跳转, 刷新一次就可以保存 session id 到 cookies 中
redirect('index');
}
代码是上面这样的, 如果把 redirect 注释掉, 然后此时刷新一次, session id 就会保存到 cookies 中, 如果加上 redirect, 跳转到首页后, 会创建一个新的 session, 里面并没有 flashdata.
请教各位大神如何处理这个问题?
1
haiyang416 2016-01-24 18:01:31 +08:00 via Android
登录后写入的 session 内容是什么?可以保留 session id 只清空需要移除的内容
|
2
sensui7 OP @haiyang416 倒也没什么敏感的东西, 这确实是个办法, 但是这个问题碰到了, 不解决, 很闹心. 我折腾挺长时间了,
|
3
sensui7 OP 大神救我
|
4
haiyang416 2016-01-24 21:17:38 +08:00 via Android
@sensui7 session id 对于客户端来说也是一个 cookie,对 http 协议来说只是一个 header ,重定向也只是一个 header ,所以你只需要在服务端重新生成一个 Sid ,然后以 header 发送到客户端即可。
|
5
guoer 2016-01-24 21:42:07 +08:00 1
redirect('index');前加个
``` header('set-cookie:' . session_id()); ``` 试试 |
6
ChoateYao 2016-01-24 21:53:39 +08:00 1
这个问题有一个解决方案,就是你`logout`之后会清除各种`session`,那么你在重新给 session 赋值的时候,顺便刷新 session_id ( session_regenerate_id )就可以解决这个问题了。
这是 PHP 本身的问题。 |
7
micate 2016-01-24 23:15:16 +08:00
如果信息量很小且没有敏感性,可以附加到跳转的 URL 中,在跳转到的地方从 URL 中获取。
|