Почему php не удаляет cookie, установленные javascript?

На моем сайте есть поле для комментариев.

Публикация комментария обрабатывается javascript, js публикует данные в php-скрипте, а php выполняет связанные с db вещи и показывает подтверждение только в том случае, если пользователь вошел в систему, если пользователь не вошел в систему, тогда php выдает ответ not_loggedin после его получения, js показывает окно начальной загрузки с ссылка на страницу входа.

Таким образом, если пользователь не вошел в систему, тогда javascript сохраняет введенный комментарий в cookie, чтобы после входа в систему пользователь не мог повторно ввести комментарий. Как это

    document.cookie = id + "=" + input_text + "; ";

и после входа в комментарий текстовое поле заполняется чтением файла cookie, в котором хранится текст комментария.

все до этого работает отлично, но после вставки комментария в php я пытаюсь удалить cookie, как это.,

setcookie($id, "", time()-3600);
print_r($_COOKIE);
exit('<p class="bg-info">Thank you! Your comment has been posted.</p>');

но он по-прежнему не удаляет cookie, когда я перезагружаю страницу, поле textarea для комментария, которое я заполнил ранее введенным комментарием, которое снова читается из cookie.,

как мне решить это?

я даже попытался отобразить cookie в php, который хранится в js, lke this

//insert comment in db
//setcookie($id, "", time()-3600);
print_r($_COOKIE);
exit('<p class="bg-info">Thank you! Your comment has been posted.</p>');

но он не показывает cookie, который установлен js, он показывает cookie PHPSESSID после публикации комментария.,

Array
(
[PHPSESSID] => c5rc6c8ggg24edg1v2o8hebb20
)

Я не пытаюсь удалить файл cookie PHPSESSID.,
Я показываю это на странице с помощью JS. как
post_comment.php — это другой файл в другом каталоге на том же сервере.

что я делаю не так?

Проще говоря,
js устанавливает cookie, а php должен удалить cookie.

———-

обновление 1:

я попытался установить путь при установке cookie в js, как это

document.cookie = id + "=" + input_text + "; path=/";

и после публикации cookie., теперь я получаю это.,

Array
(
[PHPSESSID] => c5rc6c8ggg24edg1v2o8hebb20
[4778] => this is comment
)

мой PHP-код, как это.,

//insert comment is db
setcookie($id, "", time()-3600);
printr($_COOKIE);
exit('<p class="bg-info">Thank you! Your comment has been posted.</p>');

но печенье все еще там.


обновление 2:
это очень странно.,

если я пытаюсь установить cookie с тем же именем в php, создается еще один cookie.
мой php код

setcookie($id, "sdf", time()+36000);
printr($_COOKIE);
exit('<p class="bg-info">Thank you! Your comment has been posted.</p>');

теперь, когда я проверяю менеджер cookie broswers, я вижу 2 куки с тем же именем,

но оба имеют разный контент, тот, который был установлен с помощью javascript, имеет комментарий, введенный пользователем, и другой cookie, который мы установили с помощью php выше, имеет контент «sdf».

Я не знаю, как это возможно иметь 2 куки с одинаковыми именами. ,

какие-нибудь подсказки?

1

Решение

Вы должны убедиться, что все
параметры (кроме имени и времени в зависимости от файла cookie) одинаковы при установке Cookie в Javascript и при удалении Cookie в PHP

Параметры, т. Е. Имя, путь (значение и время истечения могут быть разными.)

например,

При установке cookie в JavaScript, если вы используете его так

document.cookie = id + "=" + input_text + " ; path=/";

Вы устанавливаете путь к «/»

тогда при удалении cookie в php вы должны специально установить вот так.

//remove cookie.
setcookie($id, "", time()-36000 , "/");
2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector