PHP - 丢失$ _SESSION变量索引

时间:2014-11-03 01:19:33

标签: php session

我想将一个数组传递给另一个页面,然后使用该数组中的元素来制作JSON,然后将其回显给第一页以访问它。

现在我可以将数组发送到另一个页面,然后按照我想要的格式进行格式化,我在第一页获取时回显它,但是当我尝试回显网址的fetch_get_contents时我就会这样做回显信息,它突然打破了$ _SESSION变量。

这是我的第一个文件

$_SESSION['map'] = $rowContentArray;
$url2 = "http:....php";

在我的第二个文件中,我可以将数组调好,然后用它做我想做的一切 我从其他页面回复了我想要的信息,然后当我再次尝试访问第一页上的信息时,它会中断

只需添加最后一行

即可
$_SESSION['map'] = $rowContentArray;
$url2 = "http:.....php";
echo file_get_contents($url2, true);

我得到的错误是我在第二个文件中未定义用于访问$ _SESSION变量中的数组的索引

$map = $_SESSION['map'];

错误:

注意:未定义的索引:map

在第一个文件中,我可以在会话之后回显任何随机字符串,并且一切仍然有效。但是当我尝试回显url内容时,它会中断。

我对可能导致会话变量丢失的原因感到非常困惑。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

Mate,你的脚本中没有任何错误!实际上这正是预期的行为。

当您从浏览器访问该页面时,会设置一个特定的COOKIE,并且$_SESSION数组将绑定到此cookie。

当您使用file_get_contents($url2, true);访问该页面时,服务器正在为另一个COOKIE分配全新的$_SESSION数组绑定。

显然,第二个$_SESSION数组没有设置map键,所以正如预期的那样,你得到了 Notice: Undefined index: map

请注意,变量$_SESSION是特定于会话的,因此,如果您说1000个同时打开的服务器会话,则您有1000个不同版本的$_SESSION变量。

查看此文章以清楚地了解事项:http://en.wikipedia.org/wiki/HTTP_cookie#Session_cookie

如果您可以定义具体的用例,我们将能够为您提供更多帮助。

通常的方法是在需要在不同会话之间传输数据时使用GETPOST变量。例如,在您的情况下,您可以尝试:
file_get_contents($url2 . '?map=' . json_encode($rowContentArray));

然后在$_SESSION['map']中,您将获得$_GET['map']

中的数组

如果数组$rowContentArray大到不足以作为GET参数,那么您将不得不使用POST方法。