如果我用url.openStream打开url,为什么$ _SESSION重置?

时间:2013-03-17 11:37:27

标签: java php session session-variables

我正在使用以下代码来读取网址中的内容:

public static String getPageContent(URL url) throws IOException {

   InputStream in = url.openStream();
   StringBuffer sb = new StringBuffer();

   byte[] buffer = new byte[256];

   while (true) {
      int byteRead = in.read(buffer);
      if (byteRead == -1) {
         break;
      }
      for (int i = 0; i < byteRead; i++) {
         sb.append((char) buffer[i]);
      }
   }
   return sb.toString();
}

然后我称之为:

public static void main(String[] as) {
   try {
      URL u = new URL("http", "localhost", "/sessiontest.php");
      System.out.println(getPageContent(u));
      System.err.println(getPageContent(u));
   } catch (Exception e) {
      e.printStackTrace();
   }
}

我的sessiontest.php包含:

<?php

session_start();
if (isset($_SESSION['asd'])) {
   echo "set";
   unset($_SESSION['asd']);
} else {
   echo "not set";
   $_SESSION["asd"]="asdasdajklhlòjkl";
}
?>

此代码在设置set时打印$_SESSION['asd'],如果未设置则打印not set

多次调用我的URL时,第一次输出“未设置”,然后第二次“设置”,第三次“未设置”,等等。

问题是,我的代码我正在调用两次相同的页面,我总是收到“未设置”作为sessiontest.php的输出,而如果我从任何浏览器访问我的页面两次,我看到“未设置“然后”设置“。

似乎php处理我所有的连接作为不同的会话,为什么?

1 个答案:

答案 0 :(得分:0)

打印session_id()的值,以查看生成的ID是否在所有请求中相同。一个会话应该是相同的。出于某种原因,如果它不相同,请检查存储会话的目录的权限。您也可以尝试使用session_id($ id);

手动设置值