как я могу вернуть переменную из запроса PHP в AJAXA. Я хочу, чтобы пользователь был перенаправлен на панель пользователя с помощью javascript после успешного ввода логина и пароля. Запрос на PHP был успешно написан, но Ajax не возвращает никаких результатов.
Код Javascript:
$(document).ready(function() {
$("#btn-login").click(function() {
const loginAuth = $("#login-auth").val();
const passAuth = $("#pass-auth").val();
$.ajax({
type: "POST", //Request type
url: "http://localhost/game/login.php",
data: {
loginAuth: loginAuth,
passAuth: passAuth
},
cache: false,
success: function(data) {
console.info(data);
}
});
});
});Код PHP:
<?php
require ('connect.php');
session_start();
// If form submitted, insert values into the database.
if (isset($_POST['loginAuth'])) {
// removes backslashes
$username = stripslashes($_REQUEST['loginAuth']);
// escapes special characters in a string
$username = mysqli_real_escape_string($con, $username);
$password = stripslashes($_REQUEST['passAuth']);
$password = mysqli_real_escape_string($con, $password);
// Checking is user existing in the database or not
$query = "SELECT * FROM `users` WHERE login='$username'
and password='" . md5($password) . "'";
$result = mysqli_query($con, $query) or die(mysql_error());
$rows = mysqli_num_rows($result);
if ($rows == 1) {
$_SESSION['username'] = $username;
// Redirect user to index.php
$arr = 'udało się';
header("Location: panel.php");
}
else {
$arr = false;
header("Location: panelLogin.php");
}
}
else {
}
echo json_encode($arr);
?>
Большое спасибо за любую помощь.
Я не могу подчеркнуть, насколько это небезопасно. Для этого вы должны использовать подготовленный оператор и не использовать MD5 для хеширования / хранения паролей. Используйте password_hash() и password_verify(). Кроме того, вы смешиваете разные API-интерфейсы mysql с mysql_error() и не будете работать, если ваш запрос завершится ошибкой. Это должен быть mysqli_error($con). Вы также должны прочитать этот вопрос и ответ на real_escape_string().






вы не можете перенаправить пользователя из php-скрипта, который вызывается из вызова ajax.
потому что он будет перенаправлять, но не на экземпляр вашего браузера, а на ajax.
вам нужно перенаправить его с javascript.
так что ты можешь сделать
echo "true";
вместо
header("Location: panel.php");
и echo "false"; // in case login failed
в качестве примера, но вы можете распечатать текст в формате json и использовать более информативные сообщения.
и вы можете проверить эти значения из функции успеха ajax, тогда вы можете сделать
window.location.href = "the url you want to redirect to";
Большое Вам спасибо. Все работает. И как будет выглядеть вопрос сеанса, если я захочу отобразить данные пользователя с помощью метода GET, будут ли данные отображаться правильно и является ли это безопасным методом?
да, конечно, у вас все еще есть доступ к данным сеанса. но я не понял вашу вторую часть вопроса! что вы имеете в виду, это метод сохранения? получить пользовательские данные методом GET?
header("Location: panelLogin.php");заставит ваш запрос AJAX следовать этому перенаправлению, а не перенаправить вашу страницу. Вам нужно вернуть какие-то данные, чтобы ваш Javascript знал, что нужно перенаправить браузер на страницу. Т.е.:echo json_encode(['state' => true]);