CodeIgniter,PHP并在会话被销毁时重新加载首页

时间:2013-04-18 14:41:33

标签: php codeigniter session

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

这里有一些代码:

这是我的首页,包含登录/退出选项

<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函数在登录控制器中的作用

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

当按下注销按钮时,会加载首页视图,但顶部的此栏(topmenu div)保持不变,并且仍显示注销选项,即使会话已被销毁

2 个答案:

答案 0 :(得分:2)

来自PHP.net

  

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

您必须强制页面加载(例如重定向)才能删除它。

替换 的 $这 - &GT;负载&gt;查看( '头版'); 同 的重定向( '头版'); 重定向到名为frontpage的控制器 要么 的重定向(current_url()); 重定向到当前页面。

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

答案 1 :(得分:0)

变量仍将初始化,直到下次重新加载,手动取消设置未设置的检查变量($ _ SESSION [&#39; check&#39;])或使用重定向。