在我的注销功能中,我想销毁除一个以外的所有会话 这是我的功能:
public function out(){
$ref = $this->session->userdata('ref');
var_dump($ref);
$this->session->sess_destroy();
$this->session->set_userdata('ref', $ref );
$ref = $this->session->userdata('ref');
echo '---------------------------------------<br />';
var_dump($ref);
}
但这不起作用,甚至会破坏所有会话ref
,当我在下一页检查ref
时,我会null
在函数页面中我得到了这个输出:
array (size=2)
'val' => int 666
'date' => int 1397060477
---------------------------------------
array (size=2)
'val' => int 666
'date' => int 1397060477
A PHP Error was encountered
Severity: Notice
Message: Undefined index: last_activity
Filename: drivers/Session_cookie.php
Line Number: 590
Backtrace:
A PHP Error was encountered
Severity: Notice
Message: Undefined index: session_id
Filename: drivers/Session_cookie.php
Line Number: 611
Backtrace:
即时通讯使用3.0-dev
答案 0 :(得分:3)
试试这个:
public function out(){
$ref = $this->session->userdata('ref');
$this->session->sess_destroy(); // this kills the ID/cookie
$this->session->sess_create(); // properly start a new session with new ID/cookie
if($ref)
$this->session->set_userdata('ref', $ref );
redirect(base_url().'index');
}
注意:强>
此处未记录 sess_create()
:CodeIgniter Sessions
您必须查看/system/libraries/Session.php
才能找到sess_create()
<强>更新强>
使用Dev 3.0时,您需要这样做:
$this->session->__construct();
答案 1 :(得分:0)
thanx伙计们,我已经通过在破坏它之后在函数中加载会话来解决它...即使我自动加载sess lib!
我猜他们永远不会解决sess lib问题!
public function out(){
$ref = $this->session->userdata('ref');
$this->session->sess_destroy();
$this->load->library('session');
$this->session->set_userdata('ref', $ref );
redirect(base_url().'index');
}
答案 2 :(得分:-1)
会话被破坏但在销毁后没有重新创建。也许你的会话类应该在构造函数中有一个session_start
答案 3 :(得分:-1)
在你破坏一个会话之后,我相信这就是这一行:
$this->session->sess_destroy();
你根本没有会话,所以你不能把任何东西都拿来。
首先将会话变量存储在变量$ ref中,然后销毁整个会话,并再次尝试将某些内容放入会话中。所以在毁灭之后,你必须开始另一场会议。像这样:
public function out(){
$ref = $this->session->userdata('ref');
$this->session->sess_destroy();
session_start(); // put ur session_start func here
if($ref)
$this->session->set_userdata('ref', $ref );
redirect(base_url().'index');
}