iamdivine
@iamdivine

В чем ошибка авторизации?

выпадает ошибка ERROR 1 т.е. ошибка существования логина, хотя он есть
<?php
include 'db.php';
session_start(['cookie_lifetime' => 86400]);

if (isset ($_POST['auth']))
{
    $nick = $_POST['login'];
    $password = $_POST['password'];
    $user = $db->query("SELECT (id, pName, pPassword) FROM users WHERE pName = '$nick'");
    if ($user)
    {
       if ($password == $user['pPassword'])
       {
        $_SESSION['logged_user'] = $user['pName'];
        header ("Location /index.php");
       } 
       else echo 'ERROR 2';
    }
    else echo 'ERROR 1';
}

?>

<html>
<head>

</head>

<body>
<form method="POST">
    <strong>Ваш логин</strong>
    <input type="text" name="login"><br>
    <strong>Ваш пароль</strong>
    <input type="password" name="password"><br>
    <button type="submit" name="auth">Авторизация</button>
</form>
</body>
</html>
  • Вопрос задан
  • 191 просмотр
Решения вопроса 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
1) Хранить пароли в открытом виде - полный ахтунг.
2) Как уже указали - скобки в селекте не нужны
3)
выпадает ошибка ERROR 1 т.е. ошибка существования логина, хотя он есть
"а вот тут ты не прав малой"(с), не ошибка существования логина, а пустой результат исполнения запроса. Что вызвано именно кривым запросом.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
LaRN
@LaRN
Senior Developer
Похоже вот тут ошибка:

$user = $db->query("SELECT (id, pName, pPassword) FROM users WHERE pName = '$nick'");
нужно так:
$user = $db->query("SELECT (id, pName, pPassword) FROM users WHERE pName = '" . $nick . "'");

А так переменная $nick в запрос как имя переменной подставляется, а не как значение.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы