2012-07-02 65 views
3

幾個星期前,我在創建登錄頁面時瞭解了$_SESSION。我可以成功登錄並在變量中使用它。目前我正在嘗試瞭解$_SESSION$_COOKIE。如果我錯了,請糾正我的錯誤,當登錄和移動頁面時,我可以使用$_SESSION。用$_COOKIE,它用於記憶我上次訪問和首選項的時間。

涉及cookies的另一件事是,當網站使用廣告(例如:Google AdSense)時,他們使用Cookie跟蹤訪問者何時點擊廣告,對嗎?

我可以同時使用($_SESSION & $_COOKIE)?我在某處讀到,您可以將session_id作爲cookie的值存儲。

此外,我讀了安全,讓我找到這個:What do I need to store in the php session when user logged in?。當用戶回到網站時,是否使用session_regenerate_id

而這個:How to store a cookie with php涉及uniqid

對於那些想知道登錄的人,我使用電子郵件和密碼。這樣用戶可以改變他們的用戶名。

我期待着從任何想分享他們知識的人那裏瞭解更多關於這兩者的知識。如果我問了太多問題,你可以回答你有更多經驗的問題。

如果您需要更多信息,只需詢問,因爲我可能已經忘記包括一些東西。

謝謝。


發現這一點:What risks should I be aware of before allowing advertisements being placed on my website?

+0

「當用戶回到網站時,是否正在使用session_regenerate_id?」 - - 是什麼原因? – zerkms

+3

會話是服務器端存儲,cookie - 客戶端。這是主要區別 – zerkms

+0

@zerkms session_regenerate_id是我讀過的東西,讓我好奇。 – taeja87

回答

8

簡單來說,$_SESSION$_COOKIE是不同的。 這兩個都是php全局變量,但cookies沒有語言限制。 $_SESSION是關於將數據存儲在服務器中,同時將會話ID存儲爲cookie。 $_COOKIE瀏覽器向服務器發送的cookies。這是主要區別。如果客戶端瀏覽器禁用了Cookie,則會話不起作用。

- 安全 -

如果您確認您的瀏覽器發送請求頭,你會發現每個請求中有cookie信息。可以通過剪切您的網絡通信來跟蹤它們。 任何擁有更好工具的人都可以編輯cookie數據。 絕不使用cookies來存儲密碼! 如果您使用會話,密碼在服務器上,並且只有會話ID cookie將存儲在客戶端,減少的安全問題。查克諾里斯仍然可以劫持一個會議。

- 性能 -

如果您存儲5塊餅乾在它200個字節的瀏覽器,在每個該費用約1 KB的數據和每一個要求不管它是一個JPG文件或頁面實際上需要cookie信息。所以這直接影響您的網站對最終用戶執行的速度。

如果您使用會話,則服務器擁有此1 KB數據,而客戶端會在每個頁面請求中發送會話ID。 通過將靜態文件移動到另一個無cookie的域,您可以變得聰明起來。

- 終身 -

會議得到及時清除。因此,如果您想長時間保存某些內容,請改用Cookie。 「記住我」大部分網站的功能都是這樣工作的(仍然不存儲密碼,只是會話信息 - 不要混淆會話ID)。

底線, 會話和cookie是不同的類型。會話相對安全並且服務器端存儲。經常被清除。 Cookies可以有更長的使用期限,但它會影響性能(不是CPU/RAM - 加載時間),除非您不記住。 這是非常奇怪的,如果有理由將1 KB作爲cookie存儲。

永遠不要相信通過$_GET/POST來的用戶輸入。同樣關心$_COOKIE。 會話劫持。有人可以猜測其他人的會話ID,儘管這幾乎是不可能的。所以首先在服務器端使用一些驗證。

+0

那麼是否存在會話ID的Cookie,我可以看到Cookie?就像當我使用IE瀏覽器時,我可以找到來自不同網站內的cookies的文件夾。如果查克諾里斯劫持了一場會議,李小龍將是我的安全。 – taeja87

+0

是的,會話ID存儲在一個cookie中。這就是爲什麼當cookies被禁用時會話不起作用。 –

+0

嗯,我明白了。所以當使用cookie時,我使用session_id作爲值? – taeja87