簡體   English   中英

PHP SESSIONS登錄時檢查用戶是否仍在數據庫中

[英]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.

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