2014-09-22 2 views
1

На моем сайте есть поле для комментариев.Почему php не удаляет cookie, установленный javascript?

Публикация комментария обрабатывается JavaScript, JS сообщений данных в PHP скрипт и PHP делает связанные дб вещи и показывает подтверждение, только если пользователь вошел в систему, если пользователь разве вошел в то PHP дает not_loggedin ответ после его Js показывает начальной загрузки pop over box со ссылкой на страницу входа.

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

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

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

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

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

, но его до сих пор не извлекая печенье, когда я перезагрузить страницу, окно комментария я текстовое населенный с ранее enetered комментарием, который снова считанный из печенья.,

как я могу это решить?

я даже пытался отображать печенье в PHP, который хранится на JS, LKE этой

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

но он не показывает печенье, которое устанавливается с помощью JS, он показывает PHPSESSID печенья после отправки комментария.,

Array 
(
    [PHPSESSID] => c5rc6c8ggg24edg1v2o8hebb20 
) 

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

что я делаю неправильно?

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

----------

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

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

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

и после posting 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:. это очень странно,

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

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

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

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

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

любые ключи?

+0

Вы все еще видите файл cookie на стороне js после сохранения комментария? – andrex

+0

@andrex Я не понимаю, что вы имеете в виду, поле комментариев, в котором я записал значение cookie после перезагрузки страницы, и даже cookie отправил ben. – AMB

+0

см. Это http://stackoverflow.com/questions/10593013/delete-cookie-by-name – gabereal

ответ

2

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

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

например.

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

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

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

затем при удалении куки в PHP вы должны конкретно установить, как это.

//remove cookie. 
setcookie($id, "", time()-36000 , "/"); 
Смежные вопросы