2010-07-31 55 views
1

確實如果一個腳本設置了一個cookie,並且用戶的瀏覽器設置爲不接受cookie,那麼設置的cookie函數會檢測到這個,而不是設置一個會話?在PHP中這是真的嗎?

回答

9

另外,Cookie和會話不能直接比較。事實上,Cookie是會話實施的典型組成部分。

當然,您可以檢測用戶是否接受cookie。服務器端可以通過設置cookie,轉發用戶以及檢查用戶是否在新請求中發送剛設置的cookie來進行。

請記住:

  • 會議是一個比較抽象的概念;它將用戶關聯到服務器端存儲的一些數據。這通常通過cookie實現 - cookie存儲標識存儲數據的密鑰;用戶每發送一次請求都會發送這個密鑰,這樣服務器就可以知道要使用哪些數據。 Cookie的替代方法是在每個請求的URL中傳遞此密鑰。這是不太理想的,因爲它會污染URL並可能使用戶面臨一些安全風險(會話固定)。
  • Cookies僅僅是服務器請求用戶在每次請求時發送給它的數據片段(本身或一些更廣泛的服務器)。
1

我想你指的是session.use_trans_sid指定設置:

如果設置此設置:函數ini_set( 'session.use_trans_sid指定',1); 如果沒有可用的cookie,PHP會將會話ID附加到URL。

+0

我不認爲它可以作爲回退,但我可能是錯的。 – Artefacto 2010-07-31 06:39:33

+0

這是正確的:如果SID處於活動狀態,則會話ID將附加到任何鏈接。如果cookie被禁用,它將使會話正常工作,但它也會使檢索會話密鑰變得更容易(例如從瀏覽器歷史記錄中獲取)。它使鏈接更難看;) – BurninLeo 2010-08-03 16:56:10