0

基本上,如果文件顶部没有会话重新生成检查,我的脚本都无法工作,这很奇怪,因为我以前从未遇到过这个问题,而且我不知道为什么它会迫使我运行这段代码。下面是我的注销,然后在下面是我必须放在每个涉及会话的单个文件的顶部以使其工作。关于什么是错的任何想法?

登出:

require_once("../Core/Core.php");

if(!isset($_SESSION['LoggedIn']))
    Core::ThrowError(13,"",1);

session_destroy();
header("Location: " . Core::$url);

需要使它工作:(另外我把它放在用户查看的每个页面上(所以没有登录脚本页面之类的东西))

<?
    session_start();
    if(!isset($_SESSION['started']))
    {
        session_regenerate_id();
        $_SESSION['started'] = true;
    }
?>

更新1:

在上面添加 session_start() 之后,我将数据添加到变量中,我现在可以将数据放入会话中(尽管会话已经启动,因为它甚至在您查看登录页面之前就已经启动)但是当我调用 session_destroy() 它返回false 好像会话不存在一样,但是我将 session_start() 放在 session_destroy() 之上,它工作正常!不管它是什么,这真的很愚蠢......请帮忙。

更新 2:

如果我在尝试访问之前放置 session_start() 似乎只能访问会话数据,即使会话已经说明也是如此。

4

1 回答 1

0

好的,我设法修复它,我不知道“要使用基于 cookie 的会话,必须在向浏览器输出任何内容之前调用 session_start()。” 所以为了修复它,我把 session_start() 放在了所有东西都需要的核心中,所以一切都会在尝试访问会话之前调用它。

于 2013-03-25T20:10:09.950 回答