在PHP中使用会话的问题

时间:2011-06-11 19:58:08

标签: php session

我在两页中使用会话。在第一页,第一页,我将数据保存到它:

第一页代码:

<?php
  session_start();
  $_SESSION['dl']="goooo";
  // run page two by use fsockopen
   ...

第二页:

<?php
  session_start();
  $_SESSION['dl']="asd";
   ...

当我在其他页面阅读会话时,结果是“goooo”!为什么“asd”没有保存到会话中?

您在多页中保存'dl'的想法是什么?(帖子和Cookie无效)

3 个答案:

答案 0 :(得分:2)

因为fsockopen没有向您的服务器发回标识浏览器的Cookie。

尝试三页并进行相同的实验。你会发现它们会按预期运作。

答案 1 :(得分:0)

因为会话实际上是由数字标识的序列化数组。允许PHP加载正确会话的数字是通过cookie(或URL参数)从用户的浏览器发送的。如果您使用fsockopen打开第二页,则可能无法提供正确的会话ID。因此,在该呼叫中创建了一个新会话(并且忘记了,因为没有人知道该号码)。

此外,$_SESSION在执行一个页面时不会重新加载 - 它假定页面执行是来自浏览器的一个请求,因此在请求中间不会神奇地改变。

答案 2 :(得分:0)

会话通过在客户端浏览器上的cookie中保存会话ID来工作。使用fsockopen运行脚本时,会话不起作用,实际上在服务器而不是客户端浏览器上打开页面,这并不奇怪。