2013-03-06 2 views
8

Можно ли удалить cookie, который был установлен на передней панели через JS с PHP?PHP не может удалить cookie, установленный JavaScript

Я делаю это:

* ПЕРЕДНЯЯ (JS):

if ($.cookie('myCookie')) 
{ 
    console.log('Cookie.. :( '); 
} 
else 
{ 
    console.log('Yaay! No cookie!'); 
    $.cookie('myCookie', '123'); 
} 

НАЗАД (PHP):

if (isset($_REQUEST['removeCookie'])) 
{ 
    setcookie("myCookie", "", time()-3600); 
    unset($_COOKIE['myCookie']); 
} 

Результат:

enter image description here

Похоже, что это мистерия

+0

Что он показывает под 'печеньем 'вкладка отладчика? – hjpotter92

+1

Какой код запускается первым? вы делаете запрос php после запуска js? – datasage

+0

Если вы делаете var_dump ($ _ COOKIE); что вы добавили в свой PHP? – JoDev

ответ

0

Может кто-то запустить этот код на тестовой машине, я немного запутался, почему печенье может быть «отключено», но не может быть значение изменено или просрочена и т.д. в PHP похоже, что setcookie() не работает вообще.

<script type="text/javascript" src="jquery.js"></script> 
<script src="jquery.cookie.js"></script> 
<script> 
    $.cookie('myCookie', '123' ,'/'); 
    console.log("Created myCookie"); 
</script> 
<?php 
    echo $_COOKIE['myCookie']; 
    //Comment/uncomment below as required 
    //setcookie("myCookie", "BLAH", time()-430000); 
    //$_COOKIE['myCookie'] = "BLAH"; 
    setcookie('myCookie', '', 1, '/'); 
    echo "<br />unset myCookie"; 
    echo "<br />".$_COOKIE['myCookie']; 
?> 
<script> 
console.log($.cookie('myCookie').length); 
if ($.cookie('myCookie').length>0) 
{ 
    console.log('Cookie exists '); 
    console.log($.cookie('myCookie')); 
} 
else 
{ 
    console.log('Yaay! No cookie!'); 
} 
</script> 

Вы, кажется, чтобы быть в состоянии создать PHP <> JS печенья несовпадение т.е. 2 куки называются точно такие же, но хранящие различные данные.

+0

Ну .. это не :( – rinchik

+0

Очевидно, что минус не требовался, хотя это было. – Dave

+0

Этот фрагмент кода не будет работайте, если он хочет истечь cookie.Что его проверка в javascript, а не PHP, так что отключение переменной в PHP ничего не сделает. –

2

Это будет зависеть от того, как пользователь ПК удалит файл cookie после таймаута. Лично я не буду этому верить. Я установил cookie на пустое значение или установил его на DELETED, затем в вашем тестовом коде проверьте, установлено ли это значение, а затем проверьте, не пустое или нет. DELETED

8

Вы не можете заставить браузер удалите файл cookie. Тем не менее, вы можете удалить содержимое файла cookie и завершить его. Это именно то, что вы делаете с вашим кодом выше. Я бы, вероятно, немного его подстроил:

setcookie('myCookie', '', 1, '/'); // no need to calculate one hour ago. 
+0

Вот что. может придерживаться браузера, но из-за структуры приложения было бы проще, если бы я был бы намного проще, если бы мог это с PHP – rinchik

+0

'setcookie ('myCookie', '', 1, '/');' this будет работать –

+0

read cookie_spec: http://curl.haxx.se/rfc/cookie_spec.html –

4

Если время клиента неправильное, установка срока действия файла cookie с функцией времени() может не работать должным образом.

на отключенное печенья попробовать,

setcookie('myCookie', 'blah blah', 1);

Источник: A Comment in php setcookie docs

+1

nope. это не работает. Не знаю, почему на этом этапе. – rinchik

0

Чтобы полностью удалить куки из браузера с помощью PHP, попробуйте этот код

$name = 'exists_cookie'; 
unset($_COOKIE[$name]); 
    // Set empty value 
$blank = setcookie($name, '', time() - 3600); 
Смежные вопросы