@Cat_usual

Как удалить куки?

Собственно, мне выдало ошибку: Cannot modify header information - headers already sent

<?php
require 'db.php';
require 'database.php';


$id = $_SESSION['user_id'];
if ($result = $link->query("SELECT clicks FROM users WHERE id =".$_SESSION['user_id'])) {
    $row = $result->fetch_all();
    foreach ($row as &$value){
        $balance = $value[0];
        global $balance;
    }
    $result->close();
}

?>
<head>
    <title>Ваш аккаунт</title>
    <link rel="stylesheet" href="free.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
</head>

<?php if ( isset($_COOKIE['user_hash'])) {
    $test = $link->query('SELECT COUNT(*) FROM users WHERE hash = "' . $_COOKIE['user_hash'] . '"');
    $rows = mysqli_fetch_row($test);
    $total = $rows[0]; // всего записей
    if ($total == 1) {
        $user_id = $link->query('SELECT id, login FROM users WHERE hash = "'. $_COOKIE['user_hash'].'"');
        foreach ($user_id as $values) {
            $_SESSION['user_id'] = $values['id'];
            $_SESSION['logged_user'] = $values['login'];
        };
    };
};?>

<?php if ( isset ($_COOKIE['user_hash']) ) : ?>
    <?php
//    $test = $link->query('SELECT id FROM users WHERE hash = "'.$_COOKIE['user_hash'].'"');
    $test = $link->query('SELECT COUNT(*) FROM users WHERE hash = "'.$_COOKIE['user_hash'].'"');
    $rows = mysqli_fetch_row($test);
    $total = $rows[0]; // всего записей
    if ($total == 0) {
        unset($_SESSION['logged_user']);
        $link->query('UPDATE users SET hash = "" WHERE ID ='.$_SESSION['user_id']);
        unset($_SESSION['user_id']);
        setcookie("user_hash", '', time() - 3600);
        header('Location: /');
};
    ?>
?>


Мне надо проверить, если Куки отсутствует в БД, и получается запрос возвращает 0, то удалять все, в том числе и куки.
  • Вопрос задан
  • 129 просмотров
Решения вопроса 1
flapflapjack
@flapflapjack
на треть я прав
куки, сессии - всё это нужно делать до первого появления символа на странице. У вас уже HTML код вон появился, а вы только потом с куками манипулируете. Так не будет работать. Сначала - куки и сессии, а только потом - вывод HTML/

Если у вас был бы включен вывод ошибок PHP, то вы бы увидели "Header already send"
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Barmunk
Прежде чем решать Cannot modify header information обратите внимание на sql-инъекции. $_COOKIE['user_hash'] любой человек может открыть дебаг браузера и изменить ваш хэш на что-то похуже. Прочтите к чему может привести данный подход: https://habr.com/ru/post/148151/
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы