Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php codeigniter取消设置会话意外工作_Php_Codeigniter_Session_User Data - Fatal编程技术网

Php codeigniter取消设置会话意外工作

Php codeigniter取消设置会话意外工作,php,codeigniter,session,user-data,Php,Codeigniter,Session,User Data,我向控制员提交表格/完成操作,设置 $this->session->set_userdata('success', 3); 然后使用重定向“控制器”、“刷新”重定向到索引操作 在我看来,我得到了 $success = $this->session->userdata('success'); 做些工作,然后 $this->session->set_userdata('success', 0); 它工作正常,但当我重新加载页面时,它是一个索引操作,我仍然得到

我向控制员提交表格/完成操作,设置

$this->session->set_userdata('success', 3);
然后使用重定向“控制器”、“刷新”重定向到索引操作

在我看来,我得到了

$success = $this->session->userdata('success');
做些工作,然后

$this->session->set_userdata('success', 0);

它工作正常,但当我重新加载页面时,它是一个索引操作,我仍然得到$success 3,而不是0。我遗漏了什么?

我发现codeigniter DB会话存在许多问题,因此拒绝使用它,以包括实际上没有正确更新的会话

如果您感兴趣,我创建了一个基于PHP会话的类作为替换,它得益于向后兼容,但使用起来更简单

看看我的要点:

要安装,您需要将application/config/config.php中的CI会话配置替换为:

$config['session'] = (object)array(
    'UID' => 'MY_SESSION_KEY',
    'sess_expiration' => 7200,
    'match_ip' => False,
    'match_user_agent' => False
);
然后将文件安装到application/models/session.php

然后,不加载CI会话,只加载此会话模型。 使用它非常简单,只需将变量分配给会话,它就会自动保存,它还会锁定和解锁会话,这样异步请求就不会被锁定,这是PHP会话的一个问题


为了完全向后兼容,在加载新模型后,可能需要使用$this->session=&$this->session,否则必须确保调用会话使用会话大写字母S,因为CI模型就是这样工作的。或者改为作为库安装。

默认情况下,codeigniter在COOKIE中管理会话,更多信息

CI还提供了将会话数据存储在数据库表中的设置,若您将会话存储在表中,这将很好地工作

在完整操作中,我设置cookie$this->session->set_userdata'success',3;并发送给客户。然后我重定向到索引,这样客户机就会把cookie发回给我。我从cookie$this->session->userdata'success';中读取;,更新它$this->session->set_userdata'success',0;然后把它寄回去。所以,在页面重新加载时,我将获得新的修改cookie,成功值为0。但无论我重新加载页面多少次,我仍然得到3次