0

我正在使用以下代码从 URL 读取内容:

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如果未设置

多次调用我的网址时,第一次输出“未设置”,第二次输出“设置”,第三次输出“未设置”,以此类推。

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

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

4

1 回答 1

0

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

于 2013-03-17T12:07:02.647 回答