Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.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 注销时会话未被破坏?_Php_Codeigniter - Fatal编程技术网

Php 注销时会话未被破坏?

Php 注销时会话未被破坏?,php,codeigniter,Php,Codeigniter,我正在开发一个codeigniter网站,它与一个核心php网站集成。问题是,当我注销会话未被破坏或取消设置时,如果用户单击“上一步”按钮,他/她可以返回内部页面,而且它也不允许其他用户登录,因为会话已在运行 我已经尝试过使用corephp取消和破坏会话,但没有成功,请提供一些建议 这是我的注销代码 function logout() { session_start(); $this->session->set_userdata('user_

我正在开发一个codeigniter网站,它与一个核心php网站集成。问题是,当我注销会话未被破坏或取消设置时,如果用户单击“上一步”按钮,他/她可以返回内部页面,而且它也不允许其他用户登录,因为会话已在运行

我已经尝试过使用corephp取消和破坏会话,但没有成功,请提供一些建议

这是我的注销代码

        function logout()
    {
    session_start();

    $this->session->set_userdata('user_id','');
    $this->session->set_userdata('user_name','');
    $this->session->set_userdata('business_id','');
    $this->session->set_userdata('email','');
    $this->session->set_userdata('user_type','');
    $this->session->set_userdata('activation_status','');
    unset($_SESSION); 
    $this->session->sess_destroy();
      session_destroy();
    header('location:'.base_url().'Login');


     }

编辑:它可以在专用浏览器上工作,但不能在普通浏览器上工作

使用codeigniter会话库

function logout(){
    $this->session->sess_destroy();
    redirect('/');
}
确保已在此控制器中加载会话库(或自动加载)

另外,您可以像下面这样取消设置会话中的各个项目,而不是在会话中设置空白的userdata

$this->session->unset_userdata('user_id');

使用codeigniter会话库,它应该像

function logout(){
    $this->session->sess_destroy();
    redirect('/');
}
确保已在此控制器中加载会话库(或自动加载)

另外,您可以像下面这样取消设置会话中的各个项目,而不是在会话中设置空白的userdata

$this->session->unset_userdata('user_id');
试试这个

    $array = ('user_id', 'user_name', 'business_id', 'email', 'user_type', 'activation_status');
    $this->session->unset_userdata($array);
试试这个

    $array = ('user_id', 'user_name', 'business_id', 'email', 'user_type', 'activation_status');
    $this->session->unset_userdata($array);


取消设置($\u会话)
之前,请尝试打印
$this->SESSION
。它显示了什么?我不知道codeigniter中确切的函数销毁会话是什么,但我认为这是可以的:-
函数注销(){$this->session->sess_destroy();session_destroy();header('location:'.base_url().'Login');}
您只需要
$this->session session sess_destroy()注释掉所有剩余的内容,看看是否有效,也不需要
会话\u start()
。最初它只有$this->session->sess\u destroy();但是它与一个核心php站点集成在一起,这是主站点,这就是为什么我要应用session_destroy();但是它仍然不工作在
取消设置($\u会话)
尝试打印
$this->SESSION
之前,application/config/config.php$config['sess\u use\u database']中的配置是什么。它显示了什么?我不知道codeigniter中确切的函数销毁会话是什么,但我认为这是可以的:-
函数注销(){$this->session->sess_destroy();session_destroy();header('location:'.base_url().'Login');}
您只需要
$this->session session sess_destroy()注释掉所有剩余的内容,看看是否有效,也不需要
会话\u start()
。最初它只有$this->session->sess\u destroy();但是它与一个核心php站点集成在一起,这是主站点,这就是为什么我要应用session_destroy();但是它仍然不工作你在application/config/config.php$config['sess_use_database']中的配置是什么尝试了不工作,我们得到的sesson也来自主要的核心php站点,这就是为什么我应用了它但不工作你需要打印$this->session对象并检查它。可能您正在重定向页面上创建另一个会话。它会给出一个未定义变量的通知:_session,但如果我转到上一页,数据仍将显示在会话中。如果您在上面评论您也在使用核心php站点?在这种情况下,您需要先检查第一个会话,然后销毁该会话。我正在销毁核心php会话,但没有帮助。尝试了该操作后,我们得到的sesson也来自主要的核心php站点,这就是为什么我应用了该操作,但不工作。您需要打印$this->session对象并进行检查。可能您正在重定向页面上创建另一个会话。它会给出一个未定义变量的通知:_session,但如果我转到上一页,数据仍将显示在会话中。如果您在上面评论您也在使用核心php站点?在这种情况下,您需要检查第一个会话,然后销毁该会话。我正在销毁核心php会话,但没有帮助。请解释它与我上面所做的有什么不同?请解释它与我上面所做的有什么不同?