Я новичок в JQuery, и я использую метод пост в моем login.js файл отправить запрос на мой login.php сценарий и получить сообщение об ошибке в зависимости от характера введенных данных формы.Как перенаправить пользователя на главную страницу с JQuery после успешного входа в систему
Все мои сообщения об ошибках работают и отображаются правильно в браузере. Моя проблема в том, что когда пользователь вводит правильные учетные данные, я хочу перенаправить их на домашнюю страницу. Вместо этого jQuery берет мой результат за успешный вход в систему и вставляет его в login_error div.
Любые идеи, в которых я ошибаюсь?
login.js:
$(document).ready(
function login_error()
{
$("#login").click(function(event)
{
event.preventDefault();
var postData = $('#login_form').serialize();
$.post('login.php', postData, function(result)
{
if(result != "match"){
$('#login_error').html(result);
}else{
window.location = 'home.php';
}
});
});
});
login.php:
<?php
include "core/init.php";
$username = $password = "";
if(isset($_POST['username']) && isset($_POST['password'])){
$username = $_POST['username'];
$password = $_POST['password'];
if(empty($username) || empty($password)){
echo '<p class="alert-danger">You didn\'t fill in all the fields.</p>';
}else if(user_exists($username) === false){
echo '<p class="alert-danger">The username you entered doesn\'t match any account in our records. Sign up for an account.</p>';
}else if(user_verified($username) === false){
echo "<p class='alert-danger'><strong>".$username."</strong> is not a verified username. Check your inbox for a verification email.</p>";
}else if(check_details($username, $password) === false){
echo '<p class="alert-danger">The login details you entered don\'t match our records.</p>';
}else{
log_in($username, $password);
}
}else{
echo '<p class="alert-danger">Oops - something broke! We\'re working to fix this, check back soon.</p>';
}
?>
Мой log_in функция:
function log_in($username, $password){
$db = mysqli_connect('localhost', 'root', '', 'forum');
$sql = "SELECT user_id FROM users WHERE username = ?";
$stmt = mysqli_prepare($db, $sql);
if($stmt){
mysqli_stmt_bind_param($stmt, 's', $username);
mysqli_stmt_bind_result($stmt, $user_id);
mysqli_stmt_execute($stmt);
mysqli_stmt_fetch($stmt);
if(!empty($user_id)){
$_SESSION['id'] = $user_id;
$_SESSION['user'] = $username;
echo 'match';
}else{
return false;
}
}
}
Это эхо, «совпадение», как ошибка или что-то еще? – Forbs
Да, это повторяет «матч». jQuery обрабатывает результат для успешных учетных данных точно так же, как обрабатывает различные результаты для недопустимых учетных данных. – Callum
Затем либо сделайте 'view source', и посмотрите, будут ли отображаться дополнительные пробелы или входящие, или измените if на' if (result.trim()! = 'Match') 'и посмотрите, разрешило ли оно это – Forbs