За последние 24 часа нас посетили 21510 программистов и 1020 роботов. Сейчас ищут 739 программистов ...

Аутентификация

Тема в разделе "PHP для новичков", создана пользователем Miron9900, 21 май 2020.

Метки:
  1. Miron9900

    Miron9900 Новичок

    С нами с:
    28 фев 2019
    Сообщения:
    11
    Симпатии:
    0
    Как сделать, чтобы при не правильной авторизации вывело: "Не верный логин или пароль", все работает, но если только данные в обоих полях не правильные или если использую md5, а не password_hash, а так возвращает пустой signin.php preview в network.
    Заранее спасибо.
    Авторизация:
    PHP:
    1. $query = $db->prepare("SELECT * FROM users.users WHERE login =?");
    2. $query->execute([$login]);
    3. $count = $query->rowCount();
    4. if ($count > 0) {
    5.     $user = $query->fetch();
    6.     if (password_verify($password, $user["password"])) {
    7.        $_SESSION['user'] = [
    8.            "avatar"=>$user['avatar'],
    9.            "email"=>$user['email'],
    10.        ];
    11.        $responce = [
    12.            "status"=>true,
    13.        ];
    14.        echo json_encode($responce);
    15.    
    16.     }
    17. }else {
    18.     $responce = [
    19.         "status"=>false,
    20.         "message"=>'Не верный логин или пароль',
    21.  
    22.     ];
    23.     echo json_encode($responce);
    24.  
    25. }
    Регистрация:
    PHP:
    1. if ($password === $password_confirm) {
    2.    $password = password_hash($password,PASSWORD_DEFAULT);
    3.    $query = $db->prepare("INSERT INTO users.users(full_name,login,email,password,avatar) VALUES(?,?,?,?,?)");
    4.    $query->execute([$full_name,$login,$email,$password,$path]);
    5.    $responce = [
    6.     "status"=>true,
    7.     "message"=>'Регистрация прошла успешно',
    8. ];
    9. echo json_encode($responce);
    10. }else {
    11.     $responce = [
    12.         "status"=>false,
    13.         "type"=>1,
    14.         "message"=>'Пароли не совпадают',
    15.     ];
    16.     echo json_encode($responce);
    17. }
    JS авторизация:
    Код (Text):
    1. $('.login-btn').click(function (e) {
    2.     e.preventDefault();
    3.  
    4.     $(`input`).removeClass('error');
    5.  
    6.     let login = $('input[name="login"]').val(),
    7.         password = $('input[name="password"]').val();
    8.  
    9.     $.ajax({
    10.         url: 'vendor/signin.php',
    11.         type: 'POST',
    12.         dataType: 'json',
    13.         data: {
    14.             login: login,
    15.             password: password
    16.         },
    17.         success (data) {
    18.         console.log(data);    
    19.             if (data.status) {
    20.                 document.location.href = 'profile.php';
    21.             } else {
    22.  
    23.                 if (data.type === 1) {
    24.                     data.fields.forEach(function (field) {
    25.                         $(`input[name="${field}"]`).addClass('error');
    26.                     });
    27.                 }
    28.  
    29.                 $('.msg').removeClass('none').text(data.message);
    30.             }
    31.  
    32.         }
    33.     });
    34.  
    35. });
     
  2. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    @Miron9900 У вас написано:
    PHP:
    1. <?php
    2. if ($count > 0) {
    3.  
    4.     if (password_verify($password, $user["password"])) {
    5.     }
    6.     else
    7.     {
    8.         // нифига не делаем
    9.     }
    10. }else
    11. {
    12.     // выводим сообщение 'Не верный логин или пароль'
    13. }  
    вот нифига не делаем надо исправлять

    может так заработает:
    PHP:
    1. <?php
    2. $query = $db->prepare("SELECT * FROM users.users WHERE login =?");
    3. $query->execute([$login]);
    4. $count = $query->rowCount();
    5.  
    6. $responce = [
    7.     "status"=>false,
    8.     "message"=>'Не верный логин или пароль',
    9.  
    10. ];
    11.  
    12. if ($count > 0)
    13. {
    14.     $user = $query->fetch();
    15.  
    16.     if ( password_verify( $password, $user["password"] ) )
    17.     {
    18.        $_SESSION['user'] = [
    19.            "avatar"=>$user['avatar'],
    20.            "email"=>$user['email'],
    21.        ];
    22.  
    23.        $responce = [
    24.            "status"=>true,
    25.        ];
    26.  
    27.     }
    28. }
    29.  
    30. echo json_encode($responce);
    31. die();
     
    Miron9900 нравится это.
  3. Miron9900

    Miron9900 Новичок

    С нами с:
    28 фев 2019
    Сообщения:
    11
    Симпатии:
    0
    Заработало, спасибо.