用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4390|回复: 5
收起左侧

[讨论/交流] CI session中的userdata删除Array[session]变量的 BUG.

[复制链接]
发表于 2009-10-23 15:47:47 | 显示全部楼层 |阅读模式
本帖最后由 lihao812 于 2009-10-23 15:50 编辑

文件名:Session.php
PHP复制代码
 
* Delete a session variable from the "userdata" array
  *
  * @access array
  * @return void
  */
function unset_userdata($newdata = array())
{
  if (is_string($newdata))
  {
   $newdata = array($newdata => '');
  }
  if (count($newdata) > 0)
  {
   foreach ($newdata as $key => $val)
   {
    unset($this->userdata[$val]);
    //unset($this->userdata[$key]);原版,删除不了值,改成$val ,解决.
   }
  }
  $this->sess_write();
}
 
复制代码
发表于 2009-10-23 17:28:11 | 显示全部楼层
-_- userdata 里就是按 key 存的吧?
发表于 2009-10-23 18:59:36 | 显示全部楼层
= . = LZ你把key和val弄反了,原版是对的
 楼主| 发表于 2009-10-26 11:39:19 | 显示全部楼层
本帖最后由 lihao812 于 2009-10-26 11:44 编辑

$this->session->set_userdata(array('WorkNum'=>$this->input->post('WorkNum'),'password'=>@md5($this->input->post('password')));

//这样不对? 先变量名字,再值.

$sessionArr = array('WorkNum','password');
$this->session->unset_userdata($sessionArr);

//这样子删的,有什么问题?????
//因为之前用手册上的例子,删不了..
//手册上是这么讲的:
$sessionArr = array('WorkNum'=>'','password'=>'');
$this->session->unset_userdata($sessionArr);

//结果就是删不掉 ...
发表于 2009-10-26 12:34:47 | 显示全部楼层
注意一下 CI 版本,还有这个是 cookie 实现的,要下一次请求才有效果,不是立即生效的。
发表于 2012-8-16 14:08:58 | 显示全部楼层
  怎么获取最新的session  因为我要做这个欢迎您 admin  但是每次都是admin  我已经换名字了

本版积分规则