Добрый день. Делаю простую авторизацию посредством ajax запроса:
Форма авторизации<form class="login mt-3" action="" method="POST">
<label for="login">Ваш логин:</label>
<input type="text" name="login" id="login" class="form-control">
<label for="pass">Введите пароль:</label>
<input type="pass" name="pass" id="pass" class="form-control">
<div class="alert alert-danger mt-3" id="error-reg" style="display: none;"></div>
<button type="button" id="auth_user" class="btn btn-primary mt-2">Войти</button>
</form>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>
$('#auth_user').click(function(){
var login = $('#login').val();
var pass = $('#pass').val();
$.ajax({
url: 'pages/register/login.php',
type: 'POST',
cache: false,
data: {'login' : login,'pass' : pass},
dataType: 'html',
success: function(data){
if(data == 'Готово'){
$('#auth_user').text(data);
$('#error-regauth').hide();
document.location.reload(true);
}
else{
$('#error-reg').show();
$('#error-reg').text(data)
}
}
});
});
</script>
Который взаимодействует со страницей login.php:
<?php
$login = trim(filter_var($_POST['login'], FILTER_SANITIZE_STRING));
$pass = trim(filter_var($_POST['pass'], FILTER_SANITIZE_STRING));
$error = '';
if(mb_strlen($login) <= 3)
$error = 'Введите логин. Минимум 3 символа.';
else if(mb_strlen($pass) <= 3)
$error = 'Введите пароль. Минимум 3 символа.';
if($error != ''){
echo "$error";
exit();
}
$hash = "ase4hhsheshj2drjafawg";
$pass = md5($pass.$hash);
$user = 'root';
$password = '';
$db = 'название';
$host = 'название';
$dsn ='mysql:host='.$host.';dbname='.$db;
$pdo = new PDO($dsn,$user,$password);
$sql = 'SELECT `id` FROM `users` WHERE `login` =:login && `pass` =:pass';
$query = $pdo->prepare($sql);
$query->execute(['login'=>$login, 'pass'=>$pass]);
$user = $query->fetch(PDO::FETCH_OBJ);
if($user->id==0)
echo 'Такого пользователя не существует';
else{
echo 'Готово';
}
?>
Итого, если пользователь успешно входит, я получаю строку "готово", которая сравнивается с условием в операторе if и выводится текст в кнопку, что авторизация прошла успешно(регистрация, к слову, работает по такому же принципу).
Но он туда не выводится, он выводится в else в #error-reg, т.е alert, куда должны выводится только результаты проверок. И обновление страницы, которые прописано в условии так же не работает.
Подключение к базе данных данных правильное, страница с регистрацией добавляет новых пользователей, кнопка там меняется и происходит обновление страницы.
Кодировка везде UTF-8, на странице с регистрацией аналогичный код и там всё работает без каких-либо проблем. И вот поэтому я не могу понять, почему в регистрации работает, а в авторизации нет?
Страница с формой регистрации?>
<code lang="php">
<?php
require 'header.php'
?>
<div class="wrappers">
<div class="content">
<div class="container">
<div class="pages">
<div class="row">
<div class="col-lg-6 ">
<h5>
Регистрация
</h5>
<form class="register mt-3" action="" method="POST">
<label for="username">Ваше имя:</label>
<input type="text" name="username" id="username" class="form-control">
<label for="login">Придумайте логин:</label>
<input type="text" name="login" id="login" class="form-control">
<label for="email">Ваш Email:</label>
<input type="email" name="email" id="email" class="form-control">
<label for="pass">Придумайте пароль:</label>
<input type="pass" name="pass" id="pass" class="form-control">
<div class="alert alert-danger mt-3" id="error-reg" style="display: none;"></div>
<div class="alert alert-success mt-3" id="happy-reg" style="display: none;"></div>
<button type="button" id="reg_user" class="btn btn-primary mt-2">Зарегистрироваться</button>
</form>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>
$('#reg_user').click(function(){
var username = $('#username').val();
var login = $('#login').val();
var email = $('#email').val();
var pass = $('#pass').val();
$.ajax({
url: 'pages/register/register.php',
type: 'POST',
cache: false,
data: {'username' : username,'login' : login,'email' : email,'pass' : pass},
dataType: 'html',
success: function(data){
if(data == 'Готово'){
$('#reg_user').text('Вы успешно зарегистрировались');
$('#error-reg').hide();
document.location.reload(true);
}
else{
$('#error-reg').show();
$('#error-reg').text(data)
}
}
});
});
</script>
<div class="col-lg-6">
</div>
</div>
</div>
</div>
</div>
</div>
<?php
require 'footer.php'
?>
</code>
Страница обработки регистрации<?php
$username = trim(filter_var($_POST['username'], FILTER_SANITIZE_STRING));
$login = trim(filter_var($_POST['login'], FILTER_SANITIZE_STRING));
$email = trim(filter_var($_POST['email'], FILTER_SANITIZE_EMAIL));
$pass = trim(filter_var($_POST['pass'], FILTER_SANITIZE_STRING));
$error = '';
if(mb_strlen($username) <= 3)
$error = 'Введите имя. Минимум 3 символа.';
else if(mb_strlen($login) <= 3)
$error = 'Введите логин. Минимум 3 символа.';
else if(mb_strlen($email) <= 3)
$error = 'Введите Email. Минимум 3 символа.';
else if(mb_strlen($pass) <= 3)
$error = 'Введите пароль. Минимум 3 символа.';
if($error != ''){
echo "$error";
exit();
}
$hash = "ase4hhsheshj2drjafawg";
$pass = md5($pass.$hash);
$user = 'root';
$password = '';
$db = 'technodasha';
$host = 'techodasha.ru';
$dsn ='mysql:host='.$host.';dbname='.$db;
$pdo = new PDO($dsn,$user,$password);
$sql = 'INSERT INTO users(username,login,email,pass) VALUES(?,?,?,?)';
$query = $pdo->prepare($sql);
$query->execute([$username,$login,$email,$pass]);
echo 'Готово';
Огромное спасибо за внимание и заранее за помощь.