2016-06-11 101 views
-1

我有一個php網站,它使用mySQL創建帳戶並允許用戶登錄和註銷。一切工作正常。當用戶登錄時,它會將其ENUM值「loggedin」更改爲1,表示它們已登錄。但是,當它們註銷時,它不會更改爲0.我已將註銷超鏈接到註銷php,並且這是該註銷php。當用戶登錄時PHP會話不會更新ou

<?php // Create connection include_once 'credentials.php'; 

$conn = new mysqli($db_hostname, $db_username, $db_password, $db_database); // Check connection if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 

}else{ 

session_start(); 

session_destroy(); $sql = ("UPDATE users SET loggedin = '0' WHERE id = '$userid'"); 
    mysqli_query($conn, $sql); header("Location: ../index.php"); exit; } 

?> 

但它似乎並沒有工作。另外,在登錄的用戶中,當用戶第一次登錄時,登錄狀態在mySQL中被更改,但除非用戶註銷,否則網站不會顯示它,然後再次登錄。

+1

我認爲您的'$ userid'變量從您的註銷腳本中丟失 –

+0

這種方法長期不會有趣。有些用戶會在沒有註銷的情況下關閉該頁面,並且您將擁有1個應該有0的位置。 – ceejayoz

+1

**警告**:使用'mysqli'時,您應該使用[參數化查詢](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)和['bind_param']( http://php.net/manual/en/mysqli-stmt.bind-param.php)將用戶數據添加到您的查詢中。 **不要**使用字符串插值或連接來完成此操作,因爲您創建了嚴重的[SQL注入漏洞](http://bobby-tables.com/)。 **絕不**將'$ _POST'或'$ _GET'數據直接放入查詢中,如果有人試圖利用您的錯誤,這可能是非常有害的。 – tadman

回答

-1

你必須在mysql應用程序(例如:phpmyadmin)中檢查你的更新查詢,以確保查詢運行良好。 然後嘗試刪除此行的()$sql = ("UPDATE users SET loggedin = '0' WHERE id = '$userid'");所以像這樣$sql = "UPDATE users SET loggedin = '0' WHERE id = '$userid'"; 最後,請確保標頭位置的路徑是正確的。 希望它會成功:)

+0

括號沒有問題。不必要的,但很好。 – ceejayoz

+1

@ceejayoz parens看起來像某種貨物崇拜編程實踐。 – tadman