2011-05-20 50 views
1

在IE中,會話工作,但在Firefox中,它總是返回空值。PHP無法檢測到在Firefox中的會話值

我已經在index.php中設置$ _SESSION [「蘋果」] =「1」

當執行一個Flex 4/Flash應用程序將允許用戶瀏覽使用filereference的圖像文件上傳到服務器(這個應用程序是圖像上傳器),該文件將傳遞給second.php來驗證它是否是一個圖像。

在second.php本身,我有一個函數需要檢索在index.php中設置的$ _SESSION ['apple']值,它總是返回空字符串在Firefox和Chrome中,但在IE9上工作。

是否有人在Fi​​refox和Chrome上遇到過$ _SESSION的問題?

如何確保second.php可以檢索$ _SESSION?

+0

您是否嘗試過顯示會話ID?看看它是否不同於腳本? – Catalin 2011-05-20 14:52:16

+0

當涉及到會話時,Flash往往不適合Firefox。檢查服務器上的基於閃存的點擊,並且很可能會看到會話cookie未被髮送。 – 2011-05-20 14:54:49

回答

0

由於PHP在服務器上運行,它不太可能是瀏覽器的結果。最常見的問題是:您是否在所有使用$_session的php文件中以任何方式使用session_start()

+0

是的。兩者都有session_start(); – flashphp 2011-05-20 14:58:09

1
+0

想象一下...... Adob​​e產品中的一個錯誤.... – bpeterson76 2011-05-20 14:56:39

+0

arh,解決它的舊方法。還有什麼方法?如何檢索flex應用程序中的$ _SESSION值,該值將作爲參數傳遞給php? – flashphp 2011-05-20 14:57:12

+0

啊,那很多bug。 – flashphp 2011-05-20 14:57:43

1

的Adobe產品如Flash/Flex的不通過瀏覽器cookie回服務器在其他瀏覽器比IE。您需要自行將會話ID傳遞迴服務器,以便從閃存中獲取每個請求。

在PHP中,你可以使用下面的代碼會話:

if (isset($_GET['session_id'])) session_id($_GET['session_id']); 
session_start(); 

如果它不爲你工作了,你有安裝了Suhosin/hardenet補丁,您可能需要開啓加密會話cookie關閉。 (不記得確切的選項 - 我的一個corworks曾經在這樣的問題上遇到過問題)