我在两页中使用会话。在第一页,第一页,我将数据保存到它:
第一页代码:
<?php session_start(); $_SESSION['dl']="goooo"; // run page two by use fsockopen ...
第二页:
<?php session_start(); $_SESSION['dl']="asd"; ...
当我在其他页面阅读会话时,结果是“goooo”!为什么“asd”没有保存到会话中?
您在多页中保存'dl'的想法是什么?(帖子和Cookie无效)
答案 0 :(得分:2)
因为fsockopen没有向您的服务器发回标识浏览器的Cookie。
尝试三页并进行相同的实验。你会发现它们会按预期运作。
答案 1 :(得分:0)
因为会话实际上是由数字标识的序列化数组。允许PHP加载正确会话的数字是通过cookie(或URL参数)从用户的浏览器发送的。如果您使用fsockopen
打开第二页,则可能无法提供正确的会话ID。因此,在该呼叫中创建了一个新会话(并且忘记了,因为没有人知道该号码)。
此外,$_SESSION
在执行一个页面时不会重新加载 - 它假定页面执行是来自浏览器的一个请求,因此在请求中间不会神奇地改变。
答案 2 :(得分:0)
会话通过在客户端浏览器上的cookie中保存会话ID来工作。使用fsockopen
运行脚本时,会话不起作用,实际上在服务器而不是客户端浏览器上打开页面,这并不奇怪。