我有我的PHP文件重定向登錄時,檢查用戶數據的問題。頭重定向不工作,用戶檢查不更新SQL表
我認爲,問題可能出在if語句的login_check部分。我已檢查了其他部分,並且:
- 包含db.php數據是正確的。
- 當我沒有填寫其中一個字段時,用戶名/密碼if語句返回回顯。
- 「用戶信息驗證數據庫」似乎是正確的,該表被稱爲「用戶」
- 如果有意輸入錯誤的密碼,最後的else語句也會返回。
- 我用Google搜索和三重檢查頭重定向語句,並相信它是正確的語法(我周圍飾)
我注意到該列「LAST_LOGIN」不會與現在更新()值。這就是爲什麼我認爲問題出現在這個領域,但我無法弄清楚。
PHP版本:30年6月5日
這裏是php文件:
<?
/* Check User Script */
session_start(); // Start Session
include 'db.php';
// Conver to simple variables
$username = $_POST['username'];
$password = $_POST['password'];
if((!$username) || (!$password)){
echo "Please enter ALL of the information! <br />";
include 'login_form.html';
exit();
}
// Convert password to md5 hash
$password = md5($password);
// check if the user info validates the db
$sql = mysql_query("SELECT * FROM users WHERE username='$username' AND password='$password' AND activated='1'");
$login_check = mysql_num_rows($sql);
if($login_check > 0){
while($row = mysql_fetch_array($sql)){
foreach($row AS $key => $val){
$$key = stripslashes($val);
}
// Register some session variables!
session_register('first_name');
$_SESSION['first_name'] = $first_name;
session_register('last_name');
$_SESSION['last_name'] = $last_name;
session_register('email_address');
$_SESSION['email_address'] = $email_address;
session_register('special_user');
$_SESSION['user_level'] = $user_level;
mysql_query("UPDATE users SET last_login=now() WHERE userid='$userid'");
header("Location: login_success.php");
}
}
else {
echo "You could not be logged in! Either the username and password do not match or you have not validated your membership!<br />
Please try again!<br />";
include 'login_form.html';
}
?>
任何想法,將不勝感激。
嘗試運行使用相同的用戶名和密碼,你已經試過登錄您的SQL查詢,看看是否有任何結果的話。 – Calimero
您首先需要停止使用'mysql'它已被棄用切換到'mysqli_ *'或'PDO'並學習如何使用準備好的語句您的代碼是開放的,可以使用SQL注入來破解。 – Sand
mysql的PHP擴展已經死了 - 停止使用mysql的PHP擴展。這是舊的,從PHP 5.5開始不推薦使用,並且在PHP 7.0中完全刪除。改用mysqli或PDO_mysql。並且不要混合他們 –