【发布时间】:2012-09-25 10:39:10
【问题描述】:
我有两页。在一页上,我向$_SESSION 添加了一个数组。在第二页上,我正在读取数组(成功),然后从 $_SESSION 读取数组 unset。
然而发生的情况是,第二页显示的值与会话中存储的第一页不同 - 这让我认为第一页被一次又一次地调用,但如果我在会话并且不自己重新加载页面?
我做错了什么?谢谢
编辑:忘了提到第二个脚本是由网站上的 flash 文件请求的。 Flash 文件将会话 ID 作为其参数之一,然后将其发送到第二个脚本以加载正确的会话(session_id($_REQUEST['token']); 部分)。
第 1 页:
$_SESSION['HEADER_MODEL'] = getModelForHeaderVideo();
/*
[HEADER_MODEL] => Array
(
Yes these are just random numbers (for testing)
[modID] => 303768959
[modUsername] => 347073152
)
*/
第 2 页:
<?php
session_id($_REQUEST['token']);
session_start();
header('Content-Type: text/html; charset=utf-8');
if (!isset($_SESSION['HEADER_MODEL']['modID']) || (trim($_SESSION['HEADER_MODEL']['modID']) == '')) {
echo "modID=0";
} else {
echo "&modID={$_SESSION['HEADER_MODEL']['modID']}&modUsername={$_SESSION['HEADER_MODEL']['modUsername']}";
unset($_SESSION['HEADER_MODEL']);
}
?>
【问题讨论】:
-
我认为问题出在
session_start()..您为什么要在第 2 页开始新会话? -
你知道
session_id是做什么的吗? -
我很抱歉。我忘记了一些重要的信息。 Flash 电影请求第二个文件从中获取值。我将会话 ID 发布到第二个文件以加载相同的会话。我昨天在某个地方看到了这个解决方案。我将其添加到原始问题中。
-
@Jon 哦,我刚刚读到:“当使用会话 cookie 时,为 session_id() 指定一个 id 将始终在调用 session_start() 时发送一个新 cookie,无论当前会话 id 是与正在设置的相同。”。你说的是这个吗?但是如果它是一个新会话,那么数组应该是空的,就像我说的那样,它不是。每次我加载第二页时它都会不断变化。