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
CodeIgniter、PHP和在会话被破坏时重新加载首页_Php_Codeigniter_Session - Fatal编程技术网

CodeIgniter、PHP和在会话被破坏时重新加载首页

CodeIgniter、PHP和在会话被破坏时重新加载首页,php,codeigniter,session,Php,Codeigniter,Session,我试图创建一个网页,用户应该能够注册,登录和注销。这一切都很好,但是,用户需要按两次注销按钮才能重新加载页面,或者至少我是这么看的 下面是一些代码: 这是我的主页顶部,带有登录/注销选项 <div id="topmenu"> <?php if(!isset($_SESSION['check'])) { echo ' Welcome, <a href="/index.php/login/">Log In</a&g

我试图创建一个网页,用户应该能够注册,登录和注销。这一切都很好,但是,用户需要按两次注销按钮才能重新加载页面,或者至少我是这么看的

下面是一些代码:

这是我的主页顶部,带有登录/注销选项

<div id="topmenu">
        <?php

        if(!isset($_SESSION['check'])) {
        echo ' Welcome, <a href="/index.php/login/">Log In</a> <a href="/index.php/register/">Register</a> ';
        }
        else {
        echo ' Welcome, ' .$_SESSION['name'] .'! <a href="/index.php/login/destroy/">Sign Out</a>'; 
        }

        ?>
</div>

按下注销按钮时,将加载frontpage视图,但是顶部的此栏(topmenu div)保持不变,并且仍然显示注销选项,即使会话已被销毁,变量仍将初始化,直到下次重新加载,请使用unset($\u session['check'])手动取消选中变量或者使用重定向。

来自:

session_destroy()销毁与当前会话关联的所有数据它不会取消设置与会话关联的任何全局变量,也不会取消设置会话cookie

您必须强制页面加载(如重定向)才能摆脱它

替换 $this->load->view('frontpage') 具有 重定向(“frontpage”) 重定向到名为frontpage的控制器 或 重定向(当前url()) 重定向到当前页面


使用CI也可能会获得更好的结果。

如果此时只加载一个视图,我想所有内部变量仍将被设置。不要在这里加载视图,而是重定向到首页,以便发出新请求,CI可以从一开始就确定没有登录的用户。
public function destroy()
    {
        session_destroy();
        $this->load->view('frontpage');
    }