我正在尝试使用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;
?>
我可以将任何会话变量设置为字符串,但不会设置为变量。
答案 0 :(得分:6)
您希望在设置或使用任何会话变量之前使用session_start。你只需要调用一次。
如果它在其他地方工作,很可能是在调用session_start之前执行了这个特定的代码块。
答案 1 :(得分:3)
删除<?php
之前的所有不可打印字符
你可能看不到它们。
答案 2 :(得分:1)
<php
代码session_start()
任何地方$_REQUEST
变量(使用$_GET
或$_POST
代替)答案 3 :(得分:-1)
您还需要使用
注册会话