2013-05-10 89 views
1

我有一個網站使用PHP會話來管理登錄用戶。另一家公司要求用戶登錄他們的網站,然後當他們來到我的網站時,用戶將自動登錄。通過cURL設置PHP會話 - 它會爲客戶端還是服務器設置會話?

要做到這一點,我們正在使用cURL將用戶詳細信息從其網站發佈到我的網站,在那裏我驗證他們,並創建一個會話,他們登錄。

什麼我不能讓我的頭周圍,雖然是:會創建爲發送cURL POST的服務器或用戶的計算機?如果其他網站發佈數據到我的網站,我創建了基於成功登錄的會話,當用戶訪問我的網站時,他們是否會登錄?

我剛剛開始構建機制來做到這一點,並希望在我得到太多之前檢查 - 我開始認爲它不起作用。

回答

1

會話將爲創建curl請求的服務器創建,而不是最終客戶端。你可以做的是在服務器發出curl請求時生成一個令牌,然後將該令牌給予最終客戶端,該客戶端將使用此令牌請求您的站點。然後你可以檢查這個令牌來登錄他

+0

啊啊啊K - 謝謝,我已經將你的答案標記爲你首先提出的答案。我會將令牌存儲在我的數據庫中,並將其發回給他們,然後告訴他們在將用戶發送到我的網站時將其包含在URL中。我還會在初始設置安全性後讓令牌僅在數分鐘內有效。 – SammyBlackBaron 2013-05-10 14:37:42

1

首先會話將只在你自己的瀏覽器/「用戶計算機」上工作。例如,我登錄到一個網站,我用了一個會話,所以這個會話將保持活躍只在我的電腦瀏覽器中。但是當我關閉瀏覽器時,會話將被銷燬。所以要保持會話活動,你需要cookies。謝謝

2

正如其他人所說,這種方法將無法正常工作。當你創建一個PHP會話時,它將被綁定到發出請求的計算機上 - 在這種情況下,這將是另一臺服務器。

您需要確定用戶在訪問您的網站時識別用戶的方法。這可能是mguimard建議的一種令牌,第三方cookie,甚至只是他們的IP地址(儘管我強烈建議不要使用Ip)。一旦你確定了識別方法,你只需將該標識符存儲在內存/數據庫中的某處。當用戶通過標識符來到您的網站時,從存儲中檢索並自動創建新會話。

0

是不可能爲你創造那些在你的網站沒有登錄誰會話,你只爲服務器創建一個會話,當然這是行不通的

你可以要求服務器構建機制,當新用戶登錄時,將用戶重定向到您的站點以創建會話,然後您自動重定向回服務器

或者您可以實現與服務器相同的會話id方法,例如ip + useragent , 你需要做的是同步從服務器的會話,或服務器推送會話給你