【问题标题】:PHP $_SESSION variables not storing valuesPHP $_SESSION 变量不存储值
【发布时间】:2011-05-05 20:16:13
【问题描述】:

我正在尝试使用 PHP 会话变量在多个页面上传输数据。我在我网站的许多部分都使用会话变量,但这是它们不起作用的第一个地方。

我是这样设置的:

$_SESSION["savedRetailerName"] = $foo; 

然后这样称呼它:

echo $_SESSION["savedRetailerName"]; 

这两个页​​面之间的会话 ID 保持不变,我确信我正确设置了变量并且它们被正确调用。我正确启动了会话,即使在该特定页面上,其他会话变量也正确显示。

如何开始调试这种奇怪的行为?

编辑:

我目前正在处理两个不同的页面。 Page 2 设置会话变量,并且有一个按钮可以将用户返回到 Page 1。如果用户希望返回到 Page 1,则仍然填写 Page 1 中的字段。

这不是缓存问题,我可以在我的代码中与我未能返回这些变量的位置完全相同的位置返回其他会话变量。

唯一可能相关的其他代码是后退按钮处理程序 (jQuery):

  $('#backButton').live('click',function() {
        window.location.replace("page 1");
    });

编辑 2:

我认为这不起作用,因为这里有一些变量:

    <?php
    $retailerName = $_REQUEST["retailerName"];
    $description = $_REQUEST["description"];
    $savingsDetails = $_REQUEST["savingsDetails"];
    $terms = $_REQUEST["terms"];
    $phone = $_REQUEST["phone"];
    $address = $_REQUEST["address"];
    $zone = $_REQUEST["zone"];
    $dateExp = $_REQUEST["dateExp"];
    $tag = $_REQUEST["tag"];

    $_SESSION["rn"] = $retailerName;
    $_SESSION["de"] = $description;
    $_SESSION["sd"] = $savingsDetails;
    $_SESSION["tm"] = $terms;
    $_SESSION["ph"] = $phone;
    $_SESSION["ad"] = $address;
    $_SESSION["zo"] = $zone;
    $_SESSION["ex"] = $dateExp;
    $_SESSION["tg"] = $tag;
    ?>

我可以将任何会话变量设置为字符串,但不会设置为变量。

【问题讨论】:

  • 您确定这是$foo 变量中的内容吗?
  • 让我们看看更多代码。
  • @Sennheiser 不,这就是您认为相关的全部内容。您可能忽略了某些东西。
  • 如果它设置为一个字符串,那么会话不是你的问题!不要因为你传递垃圾而责备会话。

标签: php


【解决方案1】:

您想在设置或使用任何会话变量之前使用session_start。你只需要调用一次。

如果它在其他地方工作,那么这个特定的代码块很可能在 session_start 被调用之前被执行。

【讨论】:

  • @Sennheiser 我假设您在 Page1 和 Page2 上都这样做?
  • @Joe:是的。正如我之前所说,我有其他会话变量在我的代码中与我试图继承的会话变量完全输出到相同的位置
  • @Sennheiser 您认为修改/使用会话变量的其他代码与您的问题无关吗?请只显示代码
【解决方案2】:

删除&lt;?php之前的所有不可打印字符 你可能看不到他们..

【讨论】:

    【解决方案3】:
    1. &lt;php 标签前有空格
    2. 你在任何地方都没有session_start()
    3. 您正在使用粗略的 $_REQUEST 变量(改用 $_GET 或 $_POST)

    【讨论】:

      【解决方案4】:

      您还需要使用

      注册会话

      session_register @ php.net

      【讨论】:

      • "自 PHP 5.3.0 起,此功能已被弃用。强烈建议不要依赖此功能。"
      • 非常抱歉,有时很难跟上所有的更改日志。话虽如此,“注册” $_SESSION 的推荐方式是什么?只需为其分配一个值,就是这样还是什么?感谢您的提示
      • @Oliver:拨打session_start,然后拨打$_SESSION['key'] = $value。
      猜你喜欢
      • 2012-02-16
      • 2018-03-31
      • 2016-07-23
      • 2020-09-15
      • 2022-06-27
      • 1970-01-01
      • 2014-08-12
      • 2015-01-05
      • 1970-01-01
      相关资源
      最近更新 更多