【问题标题】:What can destroy a $_SESSION variable php?什么可以破坏 $_SESSION 变量 php?
【发布时间】:2016-06-25 17:45:25
【问题描述】:

我正在使用 php 开发一个 webapp,并且我的会话仅在我的应用程序的某些视图上不断被破坏,我似乎无法找出原因。我这里不能上传所有代码,因为太多了,所以想知道什么会破坏会话,我会寻找问题。 奇怪的部分是它发生在两个视图之间,例如它完全加载第一个视图没有问题(我在该视图末尾检查了 echo 语句以确保它仍然处于活动状态)并且当我单击链接时session 变量在加载下一个视图之前被销毁。

【问题讨论】:

  • 您是否在每个页面上都使用session_start(); 开始会话??
  • 是的,它在控制器的构造函数中,如果要加载页面,则必须调用它

标签: php session model-view-controller


【解决方案1】:

如果它只发生在某个视图上,是否有任何会话未设置或会话销毁?也许您需要在具有这些视图(链接)的控制器上添加 session_start() 。 (另请阅读 https://www.sitepoint.com/php-sessions/ 关于 session_start 部分)

【讨论】:

    【解决方案2】:

    您可以销毁所有会话数组:

    session_destroy();

    或仅取消设置某些部分:

    unset($_SESSION('your_thing']);
    

    另一种方法是将数组的某些部分留空:

    $_SESSION['your_thing'] ='';
    

    一切都是正确的,但是如果你销毁所有会话,在下一页你必须设置 session_start();如果你想使用会话,但你会丢失所有信息。

    最好的办法是使用 unset 或者清空数组...

    【讨论】:

      【解决方案3】:

      您可以使用session_destroy();-函数来销毁整个会话(以及所有$_SESSION-值),或者您可以使用unset-函数通过键销毁一个值,就像$_SESSION 是一个数组。

      【讨论】:

        【解决方案4】:

        始终确保您以正确的方式使用session_start()。在您使用会话的每个页面的顶部。会话不断破坏,因为会话从未进行过。要使其正常工作,请确保您已像以下示例一样设置会话开始:

        <?php
        session_start(); // Be on top
        ?>
        
        <!DOCTYPE html>
        <!-- The rest of your page
        

        希望对你有帮助

        【讨论】:

          猜你喜欢
          • 2011-11-19
          • 2020-01-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多