PHP $ _SESSION变量不存储值

时间:2011-05-05 20:16:14

标签: php

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

我这样设置:

$_SESSION["savedRetailerName"] = $foo; 

并且这样称呼它:

echo $_SESSION["savedRetailerName"]; 

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

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

修改

我正在处理两个不同的页面。第2页设置了会话变量,并且有一个按钮可以将用户返回到第1页。如果用户希望返回第1页,那么我们的想法仍然是填写第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;
    ?>

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

4 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:3)

删除<?php之前的所有不可打印字符 你可能看不到它们。

答案 2 :(得分:1)

  1. 您的<php代码
  2. 之前有空格
  3. 您没有session_start()任何地方
  4. 您正在使用粗略的$_REQUEST变量(使用$_GET$_POST代替)

答案 3 :(得分:-1)

您还需要使用

注册会话

session_register @ php.net