我目前有一個網站,允許我的訪問者通過一個簡單的腳本,我粘貼在一起,並寫了登錄。目前,我只使用會話來保持訪問者登錄。添加cookie到我的網站以存儲用戶登錄狀態有什麼好處嗎?會話和餅乾
或者還有更好的方法嗎?
使用PHP
我目前有一個網站,允許我的訪問者通過一個簡單的腳本,我粘貼在一起,並寫了登錄。目前,我只使用會話來保持訪問者登錄。添加cookie到我的網站以存儲用戶登錄狀態有什麼好處嗎?會話和餅乾
或者還有更好的方法嗎?
使用PHP
@Ramiro岡薩雷斯馬西埃爾他說他已經做出劇本,他不需要框架採取爲例。框架通常包含腳本並且放置得很好。
爲了迴應這個問題:
我通常的cookie存儲從他的MD5(密碼)和他的用戶名組合的一些MD5字符串,這樣我就可以知道下一個蒂姆他進入我的網站是在如此記錄我不會讓他再登錄
我的例子:
<?php
$username = $_POST['username'];
$password = $_POST['password'];
// sql and escape stuff witch will return 1 if he has entered a valid login
if($sqlreturn == 1){
// do login
$wraplogin = md5($username."-".md5($password)."-".SECRET_KEY); // I always define a define('SECRET_KEY', 'mysecretkey'); in global file.
// now you can store that $wraplogin in cookies and remember his login. Next time he enters the website, you read that cookie, compare it with what you have in your database and let him in.
}
?>
現在我知道這是不是最好的例子,但我個人把它用在非常大的網站(> 500.000用戶)和無已經被黑客入侵:)
這是登錄部分的cookies的優勢。
好運。
將密碼放入md5哈希中的任何真正必要性?我在想另一個隨機數據,用戶註冊時間戳可能會更好。我知道,長期以來,一個字符串永遠不會被強迫,而只是爲了偏執安全。順便說一句,從我發現的cookies的優點是,你可以設置它們讓用戶登錄XX天。 – Derek 2010-05-23 22:47:48
是的,主要你可以設置任何東西在該登錄cookie,用戶IP等 我已經添加了密碼,使該字符串有點複雜,但就像我說的,你可以把任何東西:)任何可以驗證後來。 – 2010-05-23 23:20:45
如果您使用的是PHP會話,那麼您使用的是cookies。 PHP將會話ID存儲在cookie中,並將會話數據存儲到Web服務器上磁盤上的文件中。
Web框架(Java Servlets等)通常使用cookie來識別會話;另一個通常的選項是URL參數。所以假設你使用任何Web框架,它可能已經使用cookie來存儲會話ID。 Web框架將使用此ID來標識每個請求中的Session對象。雖然cookie在服務器重新啓動後仍然存在,但由於它們存儲在瀏覽器中,所以Session對象通常不會除非您配置了Session持久性。
如果你想給用戶「自動登錄」作爲一貫的「rembember我」選項許多網站實現,你就必須堅持Session對象,如果你的框架規定。或者實現一個類似的系統,使用cookie來存儲「登錄令牌」,並在用戶訪問系統時自動記錄它們或將它們發送到登錄頁面時檢查該令牌。 (編輯:就像米哈伊其他答案建議)如果你想實現自己的方法
,我建議檢查流行的Web框架是如何實現這一點,特別是存儲的cookie的用戶數據的安全和隱私方面。
我認爲沒有其他的方法...如果你想存儲用戶登錄狀態,你將必須使用cookies。 – Cristian 2010-05-23 21:45:59
@克里斯蒂安:不....你不*有*,但另一種解決方案很醜。 (在URL中傳遞它) – mpen 2010-05-23 22:07:39