Как проверить значение Cookie на соответствие базе данных?
Контекст: создал авторизацию, сделал так, чтобы факт входа хранился в куки и не приходилось входить каждый раз при обновлении страницы и прочих перезаходах на сайт. У куки можно менять значение, что дает пользователю возможность переходить из профиля в профиль без ограничений, поэтому я решил сделать так, что при попытке изменить значение - куки самоуничтожалось.
Сама суть вопроса: Как сделать так, чтобы значение (одного) куки проверялось со значениями базы данных? Что, мол, значение куки совпадает по базе данных, как и логин с паролем, который относится к строке значения куки.
Есть вот такой набросок кода:
$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), '/');
}
}
}
Ответы (1 шт):
Ну так вы сами ответили на свой вопрос практически :) более правильно проверять на соответствие "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']
}
}
}