簡體   English   中英

PHP的餅干,會話,MySQL的

[英]php cookies,sessions,mysql

我結束了一個站點的繼承工作,該站點最初旨在向注冊用戶提供訪問權限,然后決定除了特定的受限制功能之外,還希望公共訪問。 訪問控制是體面的,但是,讓我感到困惑的是,為什么有人會為每個唯一的訪問者向其數據庫中添加一個條目。

身份驗證代碼檢查cookie和會話是否存在,如果不存在,則會創建一個受限制的用戶帳戶,並將cookie設置為:

$session = md5(time() . "sitename" . $_SERVER['REMOTE_ADDR']); setcookie("sitename",$session, time()+ 14 * 24 * 3600, "/",".sitename.com"); mysql_query("INSERT user(session,permissions) VALUES ($session, $permissions)"); $this->ActiveUser = mysql_insert_id();

服務器上有一個cron作業設置為每晚運行,以清理這些會話並將auto_increment值重置為上次注冊的用戶ID +1。盡管清理腳本很好,但它似乎忽略了洪水泛濫的明顯設計缺陷。的流量(唯一用戶)可能會使用戶ID的INT值達到其mysql最大值:2147483647。將用戶ID更新為較大的int會有所幫助,但(理論上)只能持續這么長時間。 同樣,如果說在當天的最后一個注冊用戶和第一個新的注冊用戶ID之間有50位訪問者,則介於兩者之間的auto_increment值將永遠不會被重用。

該網站為訪問者和成員提供了良好的報告指標,它為用戶查看了哪些項目,是否最終出現在購物車中以及是否通過注冊帳戶購買了該項目提供了指標。

我認為可以使用SESSION變量為訪問者和購物車重新設計身份驗證功能,而無需接觸數據庫並創建未使用的auto_increment值。 不利的一面是,他們將放棄自定義報告。

顯然是一個折衷方案,但是想通了我將其張貼在這里,看看有什么想法。 謝謝!

您知道20億個請求有多少嗎? 每天24小時以每秒10位唯一身份訪問者的速度進行數學計算,並查看到達那里需要多少年。

我運行着頻繁使用的會員站點已經有多年了,它們甚至從未遠程溢出過int4主鍵。

我的看法是這不是問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM