2012-01-11 38 views
0

我有一個主頁面啓動一個PHP會話,它創建會話ID#1。我用session_id()檢查這個。我想從PHP AJAX腳本訪問這些會話變量。爲了測試這個,我只是簡單地執行:使AJAX PHP腳本使用與主頁面相同的會話

session_start(); 
echo session_id(); 

從這個AJAX腳本。它返回一個不同的AJAX會話ID。

我知道我可以將會話ID從主頁面傳遞給AJAX腳本。有沒有其他方法可以讓AJAX腳本默認打開同一個會話?

澄清我通過javascript來做到這一點,更具體地說,它是JQGrid的添加/編輯腳本。

+0

你怎麼撥打電話相同的會話?如果它是通過JS,它應該有相同的會話ID。如果是閃光燈,則不同。 – usoban 2012-01-11 15:47:23

+0

這是爲了處理會話cookie的範圍。很顯然,你的AJAX調用所調用的位置不在會話cookie的範圍之內 - 要解決這個問題,你需要[擴大範圍](http://php.net/session-set-cookie-params)或更改目標位置以使其落入現有範圍內。或者,您可以手動將會話ID作爲AJAX請求中的GET或POST參數傳遞。進一步閱讀cookie範圍[這裏](http://en.wikipedia.org/wiki/HTTP_cookie#Domain_and_Path)。 – DaveRandom 2012-01-11 15:47:25

+0

@DaveRandom - 感謝有關cookie範圍的信息。我認爲這一定是問題所在。會話變量在web根目錄 - > index.php文件中定義,並且AJAX腳本位於Web根目錄的子文件夾中。我會盡量擴大範圍。我想你可以發表你的評論作爲答案。 – 2012-01-11 19:00:33

回答

1

這很簡單。

在ajax中,將您的session_id發佈到ajax php。

在阿賈克斯PHP

設置,如:SESSION_ID($ _ REQUEST [ 'SID'])

那麼你在

+0

我這樣做了,但會議仍然是空的!我幾乎放棄保存它.. – user109764 2014-12-10 00:16:50

相關問題