2013-03-17 22 views
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"; 
} 
?> 

$_SESSION['asd']置位時,此代碼打印set,如果未設置則not set

當調用我的URL多​​次,它應該輸出「未設置」第一次,然後在「設置」第二次,「未設置」第三時間等

的問題是,與我代碼我打了兩次相同的頁面,我總是收到「未設置」作爲sessiontest.php的輸出,而如果我從任何瀏覽器訪問我的頁面兩次,我看到「未設置」,然後「設置」。

看來,PHP處理我所有的連接作爲不同的會議,爲什麼?

+1

http://www.jroller.com/mipsJava/entry/urls_and_cookies – DaveRandom 2013-03-17 11:40:55

回答

0

打印session_id()的值以查看生成的id在所有請求中是否相同。一個會話應該是相同的。出於某種原因,如果它不相同,請檢查存儲會話的目錄的權限。您也可以嘗試使用session_id($ id)手動設置值;

相關問題