[英]PHP SESSIONS Check if user is still in database, while logged in
假設名為Michael的用戶已注冊 ,並且在名為users的表中位於我們的數據庫中。
邁克爾瀏覽我的網站,當他這樣做時,我從表中刪除了他的用戶。 我的登錄系統適用於會話。
用戶Michael從數據庫中刪除后,瀏覽器可以使用“Michael”瀏覽網站,直到會話結束。
那是因為在會話處理之后,除非您每次都檢查,否則它不會改變。
由於查詢/請求太多,我的解決方案可能會增加巨大的引擎負載:
在session.inc.php中添加一個檢查器:
if (isset($_SESSION['user']))
{
$check = $pdo->prepare("SELECT * FROM users WHERE user_name = :user")
$check->execute(array( ":user" => $_SESSION['user']));
if (!$check->rowCount())
{
session_destroy();
}
}
它會檢查是否有一行與他當前在會話中記錄的用戶名完全相同,否則會破壞會話。
題:
如果我的網站有很多瀏覽用戶,那么該解決方案是否會導致大量引擎負載?
有沒有更好的方法呢?
從“users”表中刪除行時,只需刪除或使該用戶的會話失效。
Ayush - 你打算如何摧毀別人的會話?
user1761494 - 最好的方法是在數據庫中保存會話,這不僅可以增加您網站的安全性,還可以讓您完全控制會話。 當你踢出一個用戶(刪除/禁止)時,只需刪除該用戶的會話記錄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.