Как проверить значение Cookie на соответствие базе данных?

Рейтинг: 0Ответов: 1Опубликовано: 31.01.2023

Контекст: создал авторизацию, сделал так, чтобы факт входа хранился в куки и не приходилось входить каждый раз при обновлении страницы и прочих перезаходах на сайт. У куки можно менять значение, что дает пользователю возможность переходить из профиля в профиль без ограничений, поэтому я решил сделать так, что при попытке изменить значение - куки самоуничтожалось.

Сама суть вопроса: Как сделать так, чтобы значение (одного) куки проверялось со значениями базы данных? Что, мол, значение куки совпадает по базе данных, как и логин с паролем, который относится к строке значения куки.

Есть вот такой набросок кода:

$dataBd = mysqli_query($conn, "SELECT * FROM `users`");

if (isset($_COOKIE['element'])) {
    while ($row = $dataBd->fetch_assoc()) {
    if ($_COOKIE['element'] != $row['login'] && $row['password'] && $row['element']) { 
      setcookie('element', $row['element'], time() - (86400 * 30), '/');
    }
  }
}

Ответы

▲ 0

Ну так вы сами ответили на свой вопрос практически :) более правильно проверять на соответствие "cookie" с "данным бд" и в случае, если не соответствуют значения друг-другу удалять существующий cookie.

Предполгаю что-то подобное Вам необходим реализовать:

<?php

$login = $_SESSION['login']; // я предполгаю что у вас хранится логин пользователя в сессии

$dataBd = mysqli_query($conn, "SELECT * FROM `users` WHERE `login`='$login'");

if (isset($_COOKIE['element'])) {

    while (($row = $dataBd->fetch_assoc())) {

        if ($_COOKIE['element'] !== $row['element']) {
            setcookie('element', '', time() - 3600, '/'); // удаляем cookie, если cookie не соответсвует $row['element']
        }

    }

}