破坏旧的会话,使新的会话,但php仍指旧的会话

奥利

花了我一段时间来解决这个问题的确切原因,但这似乎正在发生:

我开会。我想彻底取消我的当前会话,并从头开始,使用一个全新的会话,该会话具有空白状态。

所以这就是我要做的:

public function unregister_session()
{
    // I COMMENTED THOSE SECTIONS THAT I WASNT SURE WHAT THEY WERE DOING, BUT PROBLEM PERSISTS.
    //session_regenerate_id();
    //$params = session_get_cookie_params();
        // setcookie(session_name(), '', time() - 42000,
            // $params["path"], $params["domain"],
            // $params["secure"], $params["httponly"]);
    unset($_SESSION);
    $_SESSION=array();
    echo '<br> destroying session. old SID:'.session_id(); //echos 'qqhu7on0n...'
    session_unset();
    session_destroy();
    echo '<br> limbo SID:'.session_id(); //echos nothing.
    session_start();
    echo '<br> new SID:'.session_id();  //echos 'qqhu7on0n...'
}   

好了,所以我认为应该进行的是新的会议。而且这很好,因为至少在我看来,关于上一届会议的所有事情似乎都被遗忘了$_SESSION

但是,每当我回显session_id时,它仍然为我提供旧的会话ID!当我将任何值写入$ _SESSION时,它们不会被带到下一页,而是在下一页$_SESSION为空!

编辑:我在我脚本的多个位置(从上到下)回显session_id(),我总是显示相同的session_id。进入Google开发人员工具查看我的Cookie时,我看到了PHPSESSID的另一个ID。当我尝试在下一页上回显session_id()时,我会看到确切的ID ...

为什么会发生这种情况,我在做什么错呢?如何获取session_id()向我显示新的会话ID,而不是旧的ID?如何将值写入NEW $ _SESSION变量,以便将其实际带到下一页?

编辑-解决方案

public function unregister_session()
{
    // DUNNO IF THE COMMENTED SECTIONS MAKE A DIFFERENCE
    //$params = session_get_cookie_params();
        // setcookie(session_name(), '', time() - 42000,
            // $params["path"], $params["domain"],
            // $params["secure"], $params["httponly"]);
    unset($_SESSION);
    $_SESSION=array();
    echo '<br> destroying session. old SID:'.session_id(); //echos 'qqhu7on0n...'
    session_unset();
    session_destroy();
    echo '<br> limbo SID:'.session_id(); //echos nothing.
    session_start();
    session_regenerate_id(TRUE); //THIS DOES THE TRICK! Calling it after session_start. Dunno if true makes a difference.
    echo '<br> new SID:'.session_id();  //echos '7b2jn...' :-)
}   
上城

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PHP会话未设置或PHP会话破坏

来自分类Dev

PHP会话锁定并使用Memcache存储会话

来自分类Dev

php PHPSESSID存在,但会话已破坏

来自分类Dev

Rails 4升级旧会话的JSON :: ParseError

来自分类Dev

意外的会话破坏

来自分类Dev

了解PHP中的会话

来自分类Dev

PHP会话未加载

来自分类Dev

如何在iTerm2中终止旧会话

来自分类Dev

在Ruby on Rails 3.2中使用Mongo DB会话存储时如何清除旧/过时的会话

来自分类Dev

Laravel会话与本机PHP会话性能差异

来自分类Dev

使旧会话Cookie无效-ASP.Net身份

来自分类Dev

会话何时会被破坏?

来自分类Dev

Symfony 2会话被破坏

来自分类Dev

PHP会话安全-Canary会话

来自分类Dev

使用onclick破坏会话

来自分类Dev

即使创建了单独的目录,新的会话文件也会覆盖旧的会话文件(Flask)

来自分类Dev

会话不破坏

来自分类Dev

会话,每位用户一次登录:注销旧会话或禁止在新会话上登录

来自分类Dev

会话变量具有旧值,需要使用页面重定向进行更新

来自分类Dev

PHP重定向与数据会话破坏

来自分类Dev

存储在数据库中时,是否需要清除旧的node.js会话?

来自分类Dev

意外的会话破坏

来自分类Dev

保存会话数据无效。PHP会话

来自分类Dev

您如何有效地从旧电子邮件中复制收件人,以便在Thunderbird中创建新的邮件/会话?

来自分类Dev

Laravel,将整个会话替换为旧的会话

来自分类Dev

Symfony 2会话被破坏

来自分类Dev

PHP会话安全-Canary会话

来自分类Dev

我如何恢复 Telethon 电报中旧的会话并再次连接(无需再次发送代码))

来自分类Dev

如何在 Ratchet websocket 应用程序中使用带有 symfony 会话的旧会话 ($_SESSION)

Related 相关文章

热门标签

归档