2009-05-26 18 views
0

真的是題目中的題目。重定向到另一臺服務器並從另一臺服務器重新導向後,我可以依賴會話可用性嗎?

我有一個在線表格,經過一系列階段後,用戶被髮送到另一臺服務器上的支付網關,然後在完成他們的詳細信息後返回(沒有發送卡或個人信息,只是加密的令牌, 這纔是重點)。

因此,我可以依靠會話數據仍然可用時,他們被髮回(通過POST?),也應該我這樣做?

我的測試似乎表明是的,但這是我第一次嘗試做這樣的事情。另一種方法是在重定向&之前保存表單進度,然後在返回時將其恢復。那會更好嗎?&爲什麼如此呢?

TIA :)

回答

0

這取決於會話超時,以及是否在Apache崩潰/重新啓動。如果您需要安全防護方式,請將會話信息保存回數據庫。

+0

感謝JD,這是我的整體感覺在我問這個問題之前。我一定會保存會議。 – da5id 2009-05-26 21:34:32

0

取決於。很可能您的PHP會話通過使用存儲會話ID的cookie進行處理,但是如果您的客戶關閉了cookie,則可以將其添加到查詢字符串中(取決於SID的配置/使用)。 對於cookie,它應該是一個非問題 - 會話應該繼續。如果cookies被禁用,那麼您將依賴於您的支付網關提供商在返回客戶時提供會話ID

編輯:只需添加,如果客戶未被註銷(會話結束),存儲表單會話變量中的數據不應該成爲問題。

至於安全性,您可能希望確保會話以某種方式限制爲ip(在每次加載頁面時檢查以確保其匹配),以確保會話不被支付網關或其他不道德的行爲所劫持男人在中間(如果cookie被關閉並且查詢字符串包含PHPSESSID,那麼只有真正的擔心)。

1

是的,你通常可以依靠這個工作。

你的會話仍然會以正常的方式超時,所以只要你期望你的客戶在第三方網站花費的時間少於會話超時的時間,你應該沒問題。

我確實在做你正在建議的一些網站我維護,並沒有嚴重的問題。如果大部分客戶預計會禁用Cookie,我想這可能會更加複雜,但如果您與公衆打交道,這實際上不是問題。

但是,大多數支付網關都會讓您向他們傳遞他們在將客戶退回到您的網站時發送給您的附加信息。即使他們沒有內置的方法,您也可以將GET參數添加到它們用於將客戶返還給您的URL。這裏值得添加一個ID或訂單號碼,所以即使會話已經死亡,您也可以做些事情。

注意:有些支付服務實際上並沒有在交易結束時將客戶退回到您的網站,而只是打電話給您的服務器,讓您知道已完成特定付款。在這種情況下,您的會話將不會完好無損,因爲它不是從Web服務器發出請求的客戶。

+0

乾杯rikh,一般支付網關的好建議。這是一個自定義的實現 - 雖然他們第一次(和我)已經這樣做了。我覺得依靠會話我會相當安全,但我想我會保存它。 – da5id 2009-05-26 21:33:04

0

如果你想確保會話可用,您可以編輯會話cookie超時像這樣:

session_set_cookie_params(604800); 
session_start(); 

這將使該cookie的創建後過期一週。默認情況下,瀏覽器關閉時會過期。

你可以閱讀更多關於它在這裏

的http:// uk3.php.net/manual/en/function.session-set-cookie-params.php

相關問題