我想将一个数组传递给另一个页面,然后使用该数组中的元素生成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
如果您能够定义您的具体用例,我们将能够为您提供更多帮助。
当需要在不同会话之间传输数据时,通常的方法是使用GET
或POST
变量。例如,在您的情况下,您可以尝试:file_get_contents($url2 . '?map=' . json_encode($rowContentArray));
然后在$_SESSION['map']
中,您将在$_GET['map']
中获得阵列
如果数组$rowContentArray
足够大,不适合作为GET
参数,则必须使用POST
方法。