2010-04-14 31 views
0

我正在製作一個網站,並將允許客人投票/發表評論。我應該如何去存儲用戶信息?如何爲客人創建個人資料?

如果有人刪除cookie(我通過cookie處理訪客用戶),我不喜歡要清除的信息。如果某人清除cookie並立即更改IP,則只有訪客用戶信息應該丟失。

我應該在php中使用session嗎?

+0

你幾乎解釋了問題並證明你自己明白瞭解決方案,現在是時候構建它了:) – Kemo 2010-04-14 15:16:27

回答

0

爲了可靠地保存用戶信息,您應該根據Cookie等將其存儲在服務器上,並使用某種用戶標識.PHP會話僅支持會話,因此有助於維護會話中的身份。一旦用戶關閉瀏覽器並重新啓動它,PHP會話可能會消失。類似的cookie也可能不見了。

依靠IPv4地址,但不會讓你很遠。即使無視動態IP地址的人們(每次訪問互聯網時他們都有不同的IP地址),也有很多人通過NAT共享IP。你不想爲一個人的整個辦公室分享一個用戶嗎?

因此,簡而言之,除了正常的cookie之外,您還可以使用PHP會話(如果用戶禁用了cookie),但是如果他是匿名的並且他決定刪除他的cookie,則無法將其身份恢復。請記住,在水下PHP會話通過cookie工作(並且僅在禁用cookie時回退請求參數)

0

餅乾可以比會話存放時間更長。當瀏覽器窗口關閉時,會話將會消失。

0

使用SQL數據庫是使數據保持在服務器上並可以被其他用戶查看的唯一方法。正如你已經知道的MySQL是流行的,但如果你沒有任何可用的數據庫,SQL Lite是一個不錯的選擇,它不需要你在服務器上安裝任何東西,只需在PHP confic中啓用SQL Lite即可。

在您的數據庫中創建'users'表,將密碼存儲爲SHA-256哈希值(不是原始的,不是MD5)。當他們通過session_start()登錄使用PHP會話時,並且在成功登錄時也一定要使用session_regenerate_id()(它可以防止竊取登錄的已知漏洞)。

PHP會話被認爲是實現登錄的簡單而安全的方式,試圖用自己的cookies手動重新發明輪子會導致安全問題併爲您提供更多的工作。