0
我創建了一個登錄表單,但是當我嘗試登錄時,它說電子郵件或密碼不正確,但我要輸入正確的電子郵件地址和密碼。登錄表單電子郵件和密碼不正確的錯誤
我在我的數據庫用戶表中創建用戶,但又一次我得到這個錯誤。所有錯誤是好的,當我嘗試電子郵件和密碼它說你需要輸入一個電子郵件和密碼。
和激活的錯誤也ok.I輸入正確的密碼和電子郵件地址。給我錯誤。
這是users.php
<?php
function user_exists($email) {
$email = sanitize($email);
return (mysql_result(mysql_query("SELECT COUNT(`id`) FROM `users` WHERE `email` = '$email'"), 0) == 1) ? true : false;
}
function user_active($email) {
$email = sanitize($email);
return (mysql_result(mysql_query("SELECT COUNT(`id`) FROM `users` WHERE `email` = '$email' AND `active` = 1"), 0) == 1) ? true : false;
}
function user_id_from_email($email) {
$email = sanitize($email);
return mysql_result(mysql_query("SELECT `id` FROM `users` WHERE `email` = '$email'"), 0, 'id');
}
function login($email, $password) {
$id = user_id_from_email($email);
$email = sanitize($email);
$password = md5($password);
return (mysql_result(mysql_query("SELECT COUNT (`id`) FROM `users` WHERE `email` = '$email' AND `password` = '$password'"), 0) == 1) ? $id : false;
}
?>
這是的login.php
<?php
include("core/init.php");
if(empty($_POST) === false) {
$email = $_POST['email'];
$password = $_POST['password'];
if (empty($email) === true || empty($password) === true) {
$errors[] = 'You need to enter a email and password';
} else if (user_exists($email) === false) {
$errors[] = 'We can\'t find that email. Have you registered ?';
} else if (user_active($email) === false) {
$errors[] = 'You have\'t activated your account';
} else {
$login = login($email, $password);
if ($login === false) {
$errors[] = 'That email/passowrd cocmbination is incorrect';
}else {
$_SESSION['id'] = $login;
header('Location: main.php');
exit();
}
}
print_r ($errors);
}
?>
這需要進行基本的調試。進行測試輸出,數據庫有哪些值?最終查詢看起來是什麼樣的? –
您也正在運行很多查詢,而不是測試它們中的任何一個是否正常工作 - 如果您的SQL語法存在問題,您永遠不會知道。如果我的密碼中有撇號,會發生什麼情況? – andrewsi
無關:你可以放棄'? true:false;'部分語句的一部分,例如''return(mysql_result(mysql_query(「SELECT COUNT('id')FROM'users' WHERE'email' ='$ email'AND'active' = 1」),0)== 1)? true; false;''成爲''return mysql_result(mysql_query(「SELECT COUNT('id')FROM'users' WHERE'email' ='$ email'AND'active' = 1」),0)== 1; '' –