На моем сайте есть поле для комментариев.
Публикация комментария обрабатывается 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 куки с одинаковыми именами. ,
какие-нибудь подсказки?
Вы должны убедиться, что все
параметры (кроме имени и времени в зависимости от файла cookie) одинаковы при установке Cookie в Javascript и при удалении Cookie в PHP
Параметры, т. Е. Имя, путь (значение и время истечения могут быть разными.)
например,
При установке cookie в JavaScript, если вы используете его так
document.cookie = id + "=" + input_text + " ; path=/";
Вы устанавливаете путь к «/»
тогда при удалении cookie в php вы должны специально установить вот так.
//remove cookie.
setcookie($id, "", time()-36000 , "/");
Других решений пока нет …