PHP-丢失$_SESSION变量索引


PHP - Losing $_SESSION variable index

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

现在,我可以将数组发送到另一个页面,然后按照我想要的方式格式化它,在第一个页面上回显它,但当我试图回显我回显信息的url的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'];

错误:

注意:未定义的索引:映射

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

我很困惑是什么原因导致会话变量丢失。

提前感谢您的帮助。

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方法。