@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, то удалять все, в том числе и куки.
  • Вопрос задан
  • 87 просмотров
Решения вопроса 1
flapflapjack
@flapflapjack
Fool stuck deviloper
куки, сессии - всё это нужно делать до первого появления символа на странице. У вас уже HTML код вон появился, а вы только потом с куками манипулируете. Так не будет работать. Сначала - куки и сессии, а только потом - вывод HTML/

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

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

Войти через центр авторизации
Похожие вопросы
Абсолют Банк Москва
от 130 000 до 180 000 руб.
Black Wall Group Москва
от 70 000 до 100 000 руб.
от 1 300 до 1 650 usd.
22 окт. 2019, в 22:14
10000 руб./за проект
22 окт. 2019, в 21:26
10000 руб./за проект
22 окт. 2019, в 20:50
4000 руб./за проект