1 回答

TA貢獻1827條經(jīng)驗 獲得超8個贊
您的代碼中有一個錯誤,即當用戶使用他們的電子郵件地址登錄時,該地址存儲在$_SESSION['username']. 在您的注銷腳本中,您假設(shè)這實際上是他們的用戶名,而實際上可能不是。將您的更新查詢更改為這樣的內(nèi)容,您的問題可能會得到解決:
UPDATE users
SET lastseen='$last_timestamp'
WHERE username = '$last_user'
OR email = '$last_user';
雖然這可能有效,但我建議使用您的寶貴用戶id。不要比較容易出現(xiàn)各種錯誤(大小寫錯誤的字母、前導/尾隨空格、不同編碼等)的字符串,而是比較您的 ID。這不僅使事情更不容易出錯,而且還會減少您的計算時間,尤其是在數(shù)據(jù)庫查找的上下文中。
$_SESSION['user_id'] = $user_id['id']; // or $gen_id['id'] in the signup code.
$last_user = $_SESSION['user_id'];
$lastseen_query = mysqli_query($conn, "UPDATE users SET lastseen='$last_timestamp' WHERE id = '$last_user'");
將來要自己調(diào)試此類問題,您可以使用一種流行的、快速而骯臟的方式來轉(zhuǎn)儲變量的內(nèi)容:打印/回顯創(chuàng)建用戶時的值并回$username顯在上面的腳本更新數(shù)據(jù)庫中最后看到的值,如下所示:$email$username
$username = mysqli_real_escape_string($db, $_POST['username']);
$email = mysqli_real_escape_string($db, $_POST['email']);
var_dump($username);
var_dump($email);
$last_user = $_SESSION['username'];
var_dump($last_user);
$last_user如果匹配的轉(zhuǎn)儲$email您知道上述錯誤適用并且是您的腳本行為不端的原因。您可能還會發(fā)現(xiàn)字符串值存在一些問題(可能在某些時候出現(xiàn)意外突變),這會導致 SQL 查詢中的比較失敗。
- 1 回答
- 0 關(guān)注
- 139 瀏覽
添加回答
舉報