【问题标题】:PHP, session problemsPHP,会话问题
【发布时间】:2010-01-22 07:30:52
【问题描述】:

我的数据库更改会话变量后会话变量出现问题,当我按下后退按钮时它不会更新新的会话变量,但在数据库上,它已经更新但不在网页上,我必须重新登录才能看到新变量。

我该如何使用 session_regenerate_id?

【问题讨论】:

    标签: php session


    【解决方案1】:

    复制自php.net:

    <?php
    session_start();
    
    $old_sessionid = session_id();
    
    session_regenerate_id();
    
    $new_sessionid = session_id();
    
    echo "Old Session: $old_sessionid<br />";
    echo "New Session: $new_sessionid<br />";
    
    print_r($_SESSION);
    ?>
    

    【讨论】:

      【解决方案2】:

      当用户按下后退按钮时,他们的浏览器通常会显示一个缓存页面,而不是重新请求该页面,因此这很可能是您的问题所在。

      您通过调用 session_regenerate_id 来使用它...并且用户将获得一个新的会话 ID,他们的会话将转移到该 ID,如果您将 True 作为参数传递,会话也将被清除.一般用于防止session fixation attacks

      【讨论】:

      • 但是当我在页面上按刷新时,它仍然没有改变变量,有什么解决办法吗?
      【解决方案3】:

      确保您已将以下语句放在脚本之上,否则将不会处理任何会话:

      session_start();
      

      【讨论】:

      • 如果这是真正的问题,我想我会用拳头砸墙。
      • 冷静一下,恰恰。 Hola 说数据在数据库中,所以会话必须已经开始,对吧?
      • @Pib 我为这句话道歉。我现在确实意识到,考虑到有人可能不知道使用“session_start()”来使用数据,我的讽刺可能没有得到很好的发挥。事后看来,这可能是问题所在。
      猜你喜欢
      • 2010-11-24
      • 1970-01-01
      • 1970-01-01
      • 2012-04-15
      • 1970-01-01
      相关资源
      最近更新 更多