За последние 24 часа нас посетили 17215 программистов и 1628 роботов. Сейчас ищут 1150 программистов ...

Не могу удалить cookies

Тема в разделе "Прочие вопросы по PHP", создана пользователем pr0n1x, 11 апр 2006.

  1. pr0n1x

    pr0n1x Активный пользователь

    С нами с:
    30 мар 2006
    Сообщения:
    486
    Симпатии:
    2
    Адрес:
    Киев
    Кто знает как правильно удалять cookies через php?

    пробовал setcookies('order', '', time() - 30); - не работает
    пробовал $_COOKIE['order'] = ""; - работает только на той странице где написана это строка, перехожу на другую страницу, cookies остается.

    Помогите как правильно удалить cookies?
     
  2. Belegnar

    Belegnar Активный пользователь

    С нами с:
    11 фев 2006
    Сообщения:
    299
    Симпатии:
    0
    unset ($_COOKIE ['order'])
    в доке об этом есть
     
  3. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    Должно работать. До этой строчки вы ничего не выводите print'ом?

    А это работать не должно.
     
  4. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    Ссылку на док, будьте добры.
     
  5. Belegnar

    Belegnar Активный пользователь

    С нами с:
    11 фев 2006
    Сообщения:
    299
    Симпатии:
    0
    php_manual_ru.chm - скорее всего там.
     
  6. pr0n1x

    pr0n1x Активный пользователь

    С нами с:
    30 мар 2006
    Сообщения:
    486
    Симпатии:
    2
    Адрес:
    Киев
    unset ($_COOKIE ['order'])

    это работает только на той странице где это написать
    на других страницах все остается по прежнему, cookies не удаляется
     
  7. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    pr0n1x
    а выставляешь куку как?
     
  8. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    Этим нельзя куку удалить из браузера. Этим можно удалить куку только из массива $_COOKIE, который существует только в конкретном сценарии.
    Чтобы удалить из браузера, нужно этому браузеру отправить соответствующий http-заголовок. А это делается через setcookie().
     
  9. Belegnar

    Belegnar Активный пользователь

    С нами с:
    11 фев 2006
    Сообщения:
    299
    Симпатии:
    0
    Дело в том, что перед тем как отдать страницу, сервак отдает клиенту заголовки, в том числе - кукиши. Если ты делаешь unset, то браузер не получает удаленый кукиш.

    В общем, у меня это работало. Объяснение может и кривое. :)
     
  10. Mavir

    Mavir Guest

    Не обязательно каждый раз посылать куки. Достаточно послать один раз и броузер их будет всегда посылать. unset не удаляет куки.

    Удалить куки
    PHP:
    1. <?
    2. setcookie('order','');
    3. ?>
    Второй параметр нельзя опускать и он должен быть пустым.
     
  11. mihalych

    mihalych Активный пользователь

    С нами с:
    8 фев 2006
    Сообщения:
    30
    Симпатии:
    0
    pr0n1x

    Ты пишешь setcookies, а надо setcookie.
    И тогда setcookie('order', '', time() - 30); сработает!
     
  12. Игорь_Vasinsky

    Игорь_Vasinsky Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    0
    Адрес:
    Уфа
    чтоб на верника удалил пиши так

    setcookie('order', '', time()-3600); сработает

    time()-3600 - пробелов не надо

    А вообще мне посоветовали вот так

    <?
    PHP:
    1.  if(empty($_COOKIE['cook'])) {
    2.    setcookie("cook","cooka true",time()+60*60*24,"/");
    3.    header("Refresh:2");
    4.    die('Cooka set');
    5.  }else{
    6.    $out=$_COOKIE['cook'];
    7.    if(rand(0,1)){
    8.      header("Refresh:3");
    9.      setcookie("cook","");
    10.      $out.="<br>Cooka **ka";
    11.    }
    12.    print $out;
    13.  }
    14.  ?>
    Дело в том что куку хранятся на стороне клиента (у него на компе) - а сценарий удаляется на стороне сервера, и просто удаляя куки ты увидишь лишь результат выполнения кода - а не фактическое удаление файлов куки.

    поэтому и требуется header("Refresh:3"); - обновление страницы
     
  13. Игорь_Vasinsky

    Игорь_Vasinsky Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    0
    Адрес:
    Уфа
    - сценарий выполняется на стороне сервера
     
  14. elleonidych

    elleonidych Новичок

    С нами с:
    8 апр 2015
    Сообщения:
    1
    Симпатии:
    0
    Если область видимости cookies была задана вручную, то при удалении необходимо указать ее вновь.
    Например, если мы задали cookie для всего сайта:
    setcookies('order', 'DESC', time() + 3600, '/'); // Область видимости на всем сайте
    то и удалять мы ее должны для всего сайта
    setcookies('order', '', time() - 3600, '/');
     
  15. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Треду 6 лет, милейший:)
    Автор наверняка решил свою проблему.
     
  16. anton4ik1251

    anton4ik1251 Новичок

    С нами с:
    20 июл 2014
    Сообщения:
    3
    Симпатии:
    0
    Провозился кошмар. Беда была в том, что было указано так
    setcookie("my_cookie","0",time()-1, '/');
    а надо было так
    setcookie("my_cookie","0",time()-1, "/");
    Одинарные и двойные кавычки мешать нельзя(
     
  17. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    экранирование
     
  18. Walk

    Walk Активный пользователь

    С нами с:
    7 сен 2008
    Сообщения:
    452
    Симпатии:
    86
    Кто бы мог подумать, что столкнусь с такой проблемой - на одной (!) странице сайта перестали удаляться куки. На других все удалялось нормально.

    Так не работало (задавались куки аналогично - без пути):
    PHP:
    1. setcookie($name, '', -1);
    Так заработало (в установке куков также добавил путь):
    PHP:
    1. setcookie($name, '', -1, '/');
    Может быть кому-то пригодится.