2012-08-09 91 views
1

我有一個PHP,可以訪問不存儲任何cookie的bot。會話ID可以從_POST變量中恢復。我的理解是在我從會話ID恢復會話之後,$ _SESSION在這種情況下無法訪問會話變量,因爲Cookie被禁用。PHP:從恢復會話中獲取會話變量

確切地說,會話是由用戶啓動的。此PHP頁面將只接收來自bot的一個POST請求 - 將用戶的會話ID作爲參數傳遞。我需要「恢復」這個會話並檢查用戶會話中存儲的內容。

機器人丟棄發送給它的任何信息。

是否有任何其他方式來檢索會話變量?

+0

是否有任何理由殭屍不能存儲cookie?幾乎任何腳本語言都應該能夠處理cookie。 – 2012-08-09 20:58:46

+0

@GordonBailey它是這樣設計的。我無法更改機器人。 – aaronqli 2012-08-09 21:00:33

+0

會話數據是(默認情況下)存儲在服務器上的磁盤上,只是在cookie中發送ID。你不能調用session_id($ _ POST ['my_sess_id']),然後調用session_start()?這應該工作... – webjprgm 2012-08-09 21:18:55

回答

2

是的,有一種方法。使用INI設置session.use_trans_sid(將其設置爲「1」)會將包含會話ID的查詢字符串附加到所有輸出的URL,因此不需要cookie。

+0

似乎沒有工作。確切地說,會話由用戶啓動。此PHP頁面將只接收來自bot的一個POST請求 - 將用戶的會話ID作爲參數傳遞。我需要「恢復」這個會話並檢查用戶會話中存儲的內容。 – aaronqli 2012-08-09 21:07:39

+0

而「bot」很可能會丟棄發送給它的任何信息。 – aaronqli 2012-08-09 21:09:42

+0

在這種情況下...''session_id($ _ POST ['botsession']);' – Lusitanian 2012-08-09 21:13:44

0

許多人建議使用session_id(...) - 由於某種原因,這對我的設置無效。相反,我的解決方案是讀會話文件並使用session_decode(...)填充$ _SESSION變量,然後通過$ _SESSION訪問變量。