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


CodeIgniter, PHP and reloading the front page when session is destroyed

我正在尝试创建一个用户应该能够注册,登录和注销的网页。这一切都工作得很好,但是,用户需要按下Sign Out按钮两次才能重新加载页面,或者至少我是这样看的…

下面是一些代码:

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

<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>

下面是destroy函数在login控制器

中的作用
public function destroy()
    {
        session_destroy();
        $this->load->view('frontpage');
    }

当Sign Out按钮被按下时,首页视图被加载,但是顶部的这个栏(topmenudiv)保持不变,并且仍然显示Sign Out选项,即使会话已经被销毁

From PHP.net:

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

你必须强制页面加载,如重定向,以摆脱它。

替换 $ this ->加载>视图("首页");重定向("首页");重定向到名为frontpage的控制器或重定向(current_url ()); 重定向到当前页面。

使用CI的会话类也可能得到更好的结果。

在下次重新加载之前,变量仍将被初始化,使用unset($_SESSION['check'])手动取消check变量的设置或使用重定向