не авторизуется

186
27 августа 2018, 17:40

Не авторизуется пользователь:

<?php
$dbc = mysqli_connect('localhost', 'root', '', 'test');
    if (!isset($_COOKIE['user_id'])){
        if (!isset($_POST['submit'])) {
            $user_username = mysqli_real_escape_string($dbc, trim($_POST['username']));
            $user_password = mysqli_real_escape_string($dbc, trim($_POST['$password']));
            if (!empty($user_username) && !empty($user_password)) {
            $query = "SELECT user_id, username FROM `singup` WHERE username = '$user_username' AND password = SHA('$user_password')";
                $data = mysqli_query($dbc, $query);
            if (mysqli_num_rows($data) == 1) {
                $row = mysqli_fetch_assoc($data);
                setcookie('user_id', $row['user_id'], time() + (60 * 60 * 24 * 30));
                setcookie('username', $row['username'], time() + (60 * 60 * 24 * 30));
                $home_url = 'http:// .$SERVER[HTTP_HOST]';
                header('Location' . $home_url);
            }
            else {
                echo 'Извините, Такого пользователя не существует';
            }
        }
        else {
                echo 'Введите даные правильно';
            }
        }
    }
?>
<!DOCTYPE HTML>
<html>
<head>
    <title>ВХОД</title>
    <link href="style/style.css" rel="stylesheet">
</head>
<body>
<header>
<h2>ВХОД</h2>
</header>
<content>
    <?php
        if(empty($_COOKIE['username'])) {
    ?>
            <form method="POST" action="<?php echo $_SERVER ['PHP_SELF']; ?>">
                <label for="username">Логин:</label>
                <br><input type="text" name="username">
                <br><label for="password">Пароль:</label>
                <input type="password" name="password1">
                <br>
                <button name="submit">Вход</button>
                <a href="singup.php">Регистрация</a>>
            </form>
    <?php
        }else{
            ?>
            <p><a href="myprofile.php">Мой профиль</a></p>
            <p><a href="exit.php">Выйти</a></p>
    <?php
        }
    ?>
</content>
</body>
</html>

Тут понять не могу: при нажатии кнопки "вход" перекидывает на форму входа опять.

Answer 1

Тут скорей всего две проблемы:

  1. У вас не казан путь cookie, значит по умолчанию ставится текущий, а потом выполняется редирект. Скорей всего в новом расположении эта cookie уже не действует. Чтобы cookie работала на всем сайте поставьте путь "/".

    setcookie('username', $row['username'], time() + (60 * 60 * 24 * 30), '/');
    
  2. Вы проверяете наличие cookie в том же хите, а cookie устанавливается только при ответе. Соответственно

    <?php
        if(empty($_COOKIE['username'])) {
    ?>
    

сработает, даже если пользователь верно авторизовался. Думаю факт авторизации надо сохранять в другой переменной, которую изменять при авторизации и проверять дальше в скрипте

READ ALSO
редирект на английскую версию сайта в .htaccess

редирект на английскую версию сайта в .htaccess

Есть сайт https://oneru/, который сразу редиректится на https://two

189
Warning: Cannot modify header information (PHP) [закрыт]

Warning: Cannot modify header information (PHP) [закрыт]

Помогите пожалуйста что не так вот код:

194
Проблемы с кодировкой в PHP форме

Проблемы с кодировкой в PHP форме

пытаюсь произвести поиск по БД, в которой хранятся данные на русском и украинском языках, в таблицах через phpnyadmin все выглядит красиво без...

178