2009-11-10 42 views
1

對於Web應用程序,我決定將會話變量存儲到數據庫中。除了註銷之外,所有事情都像我想要的那樣工作,其中我認爲使用簡單的session_destroy()可以完成工作,但不是。因爲我提到所有的會話信息都存儲在數據庫中,但我注意到當調用session_destroy();}時,它會從數據庫中刪除會話,但不會從服務器中刪除。我注意到,如果我不關閉瀏覽器,每次登錄時我都會得到相同的會話ID,因此如果我使用不同的用戶名登錄,我仍然會得到相同的會話ID。我如何刪除服務器會話?使用PHP銷燬數據庫中的會話

這是我用來摧毀會話類中的一個函數:

function destroy($id) { 

    // Build query 
    $newid = mysql_real_escape_string($id); 
    $sql = "DELETE FROM sessions_table WHERE session_id = '{$newid}'"; 

    mysql_query($sql); 

    return TRUE; 

}

有什麼建議嗎?

+0

您是否使用session_set_save_handler()(http://www.php.net/manual/en/function.session-set-save-handler.php)更改功能? – jeffff 2009-11-10 05:23:08

回答

1

php-manual

「session_destroy()銷燬所有與當前會話相關的數據。它不取消任何與會話,或者取消會話cookie關聯的全局變量來使用會話變量。再次,必須調用session_start()

爲了完全消滅會話,就像登錄用戶一樣,會話ID也必須是未設置的。如果cookie用於傳播會話ID(默認行爲),那麼必須刪除會話cookie。 setcookie()可用於此。「