【问题标题】:PHP code not running without session regeneration at the top of the file在文件顶部没有会话重新生成的情况下,PHP 代码无法运行
【发布时间】:2013-03-15 09:40:43
【问题描述】:

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

退出:

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() 似乎只能访问会话数据,即使会话已经声明。

【问题讨论】:

  • 您最近是否更改了session_auto_start 或相关设置?
  • 不,我没有更改任何设置
  • 我想写更多的代码来测试。也许在那里使用session_id。检查返回值,任何返回错误的东西?我看不出有什么明显的错误,而且 PHP 会话也不是“错误的”。需要多调试代码。
  • 我有很多不同的功能,如果没有脚本顶部的这个,它们都无法工作:/
  • 刚刚添加了一个更新,可能会有所帮助

标签: php session


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-21
    • 1970-01-01
    相关资源
    最近更新 更多