我想将一个数组传递给另一个页面,然后使用该数组中的元素来制作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内容时,它会中断。
我对可能导致会话变量丢失的原因感到非常困惑。
提前感谢您的帮助。
答案 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
如果您可以定义具体的用例,我们将能够为您提供更多帮助。
通常的方法是在需要在不同会话之间传输数据时使用GET
或POST
变量。例如,在您的情况下,您可以尝试:
file_get_contents($url2 . '?map=' . json_encode($rowContentArray));
然后在$_SESSION['map']
中,您将获得$_GET['map']
如果数组$rowContentArray
大到不足以作为GET
参数,那么您将不得不使用POST
方法。