Я использую библиотеку JQuery и пытаюсь передать ajax, когда моя форма подтверждена с submitHandler
.
. Я проверяю правильность информации учетной записи. Однако я делаю проблему, в моем состоянии функции успеха в Ajax, я хотел бы, чтобы форма загружалась, если данные не равны нулю. Так что мое состояние работает хорошо, если я поставил неверный пароль, он обнаруживает ноль. Однако, если я введу правильный пароль, моя форма загрузит и перенаправит меня на мою домашнюю страницу, а не на страницу профиля пользователя. PHP сеансы даже не создаются в другом месте, как если бы они игнорировались.
Jquery:
submitHandler: function (form) {
$.ajax({
type: "POST",
url: "App/Actions/PlayerCheckAuthentication.php",
data: $("form[name='auth']").serialize(),
success: function (data) {
if (data == 0) {
console.log(data)
$(".input-container").eq(5).append("<label class='box gray b_error'>Password incorrect.</label>");
$(":input[name='password']").addClass("red");
} else {
form.submit();
}
}
});
return false;
},
PHP Ajax Вызов:
<?php
require '../../vendor/autoload.php';
use App\Models\AuthManager as Auth;
use App\Config;
$Auth = new Auth();
$username = $_POST['username'];
$password = $_POST['password'];
if (isset($username) && isset($password)) {
if ($Auth->auth($username, $password)) {
echo "true";
header("Location: " . Config::APP_URL . "/me");
} else {
echo "false";
}
}
PHP Функция
public function auth($username, $password)
{
$array = Model::getDB()->get("users", "*", ["username" => $username]);
$count = Model::getDB()->count("users", ["username" => $username]);
if ($count > 0) {
if (password_verify($password, $array['password'])) {
$_SESSION['user'] = array();
foreach ($array as $user => $key) {
//unset($_SESSION['user']['password']);
$_SESSION['user'][$user] = $key;
}
return true;
} else {
return false;
}
}
}