Я пытаюсь сделать систему регистрации и входа в систему для моей домашней работы. Я выполнил регистрационную часть так же, как эта, но я не могу войти, она всегда вызывает событие ошибки (что-то пошло не так!), Status - 200
, а StatusText - OK.
Я пытался изменить dataType на TEXT, echo json_encode("x")
до echo "x"
и отредактировал метод успеха / ошибки в соответствии с этим, но ничего не изменилось.
Ajax Запрос:
$.ajax({
type : 'POST',
url : 'functions/loginHandler.php',
dataType : 'JSON',
data : {
email : email,
password : password
},
success : function(data) {
switch(data) {
case "emailNotExists" :
notifier.alert("Email not found");
break;
case "loginFailed" :
notifier.alert('Invalid login credentials');
break;
case "loginSuccessful" :
notifier.success('Login Successful');
setTimeout(function () {
window.location.href = "index.php";
},2000);
break;
}
},
error : function(data) {
notifier.alert('Something went wrong!');
console.log(data);
}
});
loginHandler.php
if (isset($_POST['username']) && !empty($_POST['username']) && isset($_POST['password']) && !empty($_POST['password'])){
$username = $_POST['username'];
$password = $_POST['password'];
$login = new Library();
$login->login($username, $password);
}
Login Method :
public function login($username, $password) {
try {
$db = DB();
$query = $db->prepare("SELECT userID FROM users WHERE username = :username");
$query->bindParam("username", $username);
$query->execute();
if($query->rowCount() == 0) {
echo json_encode("usernameNotExists");
} else {
$querySecond = $db->prepare("SELECT userID FROM users WHERE (username = :username AND password = :password)");
$querySecond->bindParam("username", $username);
$encPassword = hash("sha256", $password);
$querySecond->bindParam("password", $encPassword);
$querySecond->execute();
if ($querySecond->rowCount() > 0) {
$result = $querySecond->fetch(PDO::FETCH_OBJ);
$_SESSION["userID"] = $result->userID;
echo json_encode("loginSuccessful");
} else {
echo json_encode("loginFailed");
}
}
} catch (PDOException $e) {
exit($e->getMessage());
}
}
Редактировать: Я осознал свою ошибку, я отправлял письмо, но проверяя имя пользователя, большое спасибо за вашу помощь. Я потратил почти 2 часа на эту ошибку. :)