【问题标题】:PHP Session variables not being passed to the next pagePHP 会话变量未传递到下一页
【发布时间】:2013-05-01 15:06:09
【问题描述】:

我知道此标题与与某个问题相关的 1000 多个其他帖子重复,如果有解决方案,我提前道歉。相信我,我浏览了大量有关此主题的帖子并尝试了所有规定的解决方案,但都没有运气。

我正在尝试通过第 1 页中的以下代码创建 SESSION 变量:

<?php
  $conditionArray = array('Past', 'Past', 'Future', 'Future');
  $typeArray = array('Gains', 'Gains', 'Losses', 'Losses');
  shuffle($conditionArray);
  shuffle($typeArray);
  session_start();
  $_SESSION['conditionArray'] = implode(',',$conditionArray);
  $_SESSION['typeArray'] = implode(',',$typeArray);
  var_dump($_SESSION);
?>
<html>
<body>
</body>
</html>

现在 var_dump 显示如下:

array(2) { ["conditionArray"]=> string(23) "Future,Past,Past,Future" ["typeArray"]=> string(25) "Gains,Gains,Losses,Losses" }

这很好。

在下一页我尝试通过以下代码检索变量:

<?php
  session_start();
  echo $_SESSION['typeArray'];
  var_dump($_SESSION);
?>
<html>
<body>
</body>
</html>

它给了我:

array(0) { }

我尝试查看 php 的错误日志文件,但没有看到任何相关内容。任何帮助将不胜感激!

【问题讨论】:

  • 代码在我的系统上运行良好。我很确定,xampp/wampp 配置有问题。
  • @webgal 它不需要是第一个函数调用,但它需要在任何输出到浏览器之前被调用。
  • @webgal session_start() 在两个页面的第一行
  • @ritesh_nitw 我正在使用 MAMP。我不太确定我应该寻找什么?
  • 我在生产服务器上运行了相同的代码,它运行良好! @ritesh_nitw 是对的。我需要检查我的 MAMP 配置

标签: php session variables


【解决方案1】:

已修复:

找到解决方案后我觉得自己很愚蠢,但@webgal 是对的。 我还需要将 session_start() 放在 之前。我把它放在它的正下方和 html 标记的上方。我要感谢大家的时间、耐心和努力,并对我的无知表示诚挚的歉意!

【讨论】:

  • 就我而言,我重命名了文件,用不同的逻辑重写了代码,重新启动了 Apache 服务器,重新启动了机器,等等。奇怪的是,在“session_start()”之前删除 cmets 就可以了。忍不住笑了。你的回复给了我一个阴暗的暗示。谢谢。
【解决方案2】:

这可能是权限问题。检查会话写入的位置(ini 文件中的 session.save_path)。通常它位于 /tmp 文件夹中。但是如果它设置为另一个文件夹并且您的网络服务器没有写入权限,您可能会遇到这个问题。

另外在下一页打印session_id() 以检查您的会话是否已开始。

【讨论】:

  • 我正在使用 MAMP,并且会话存储在 Applications/MAMP/tmp/php 中。所以我相信对该文件夹的权限应该没问题,因为它在 MAMP 本身内。我还看到存储在那里的会话文件。我不知道下一步该做什么!
  • 在下一页打印 session_id() 并检查它返回的内容
  • print session_id() 返回存储在 tmp/php 文件中的 cookie 的文件名。但是两个页面的 id 是不同的。这正常吗?在加载页面 2 上创建的会话文件也是空白的。
  • session_ids 应该保持不变,除非您使用了 session_regenerate_id()...也许当页面退出时您的会话 cookie 正在消失。
  • 我使用的所有与会话有关的代码都在上面提到的代码中。我没有使用 session_regenerate_id()。即使我刷新,我的视觉 ID 也会发生变化。因此,将创建一个具有相同内容的新文件。不应该是这样吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-26
  • 2016-11-22
  • 2018-05-09
  • 2010-10-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多