Удалить МНОГОМЕРНЫЙ массив куки

Тема в разделе "Как сделать...", создана пользователем Extalionez, 30 сен 2013.

  1. Extalionez

    Extalionez Клоун

    Заблокирован
    Регистр.:
    21 авг 2008
    Сообщения:
    368
    Симпатии:
    185
    Есть примерно следующие куки.
    PHP:
    $_COOKIE['do']['re']['mi']['fa']['sol']['la']['si']
    Спрашивается... как удалить весь массив куки $_COOKIE['do']['re'] ?
    Спасибо!
     
  2. Nei

    Nei Nosce te ipsum

    Регистр.:
    5 сен 2009
    Сообщения:
    600
    Симпатии:
    468
    Код:
     unset ($_COOKIE['do']['re']);
     
  3. Extalionez

    Extalionez Клоун

    Заблокирован
    Регистр.:
    21 авг 2008
    Сообщения:
    368
    Симпатии:
    185
    Бесполезно:oops:
    Уж очень нехочется всё это обходить. Может есть у кого велосипедик?
     
  4. Nei

    Nei Nosce te ipsum

    Регистр.:
    5 сен 2009
    Сообщения:
    600
    Симпатии:
    468
    Как это бесполезно?
    Вот пример кода:
    Код:
     $_COOKIES['do']['re']['mi']['fa']['sol']['la']['si']=1;
     $_COOKIES['do']['re']['mi']['fa']['sol']['la']['si2']=2;
    echo 'До:<br><br>';
    print_r($_COOKIES);
     unset ($_COOKIES['do']['re']);
    echo '<br><br><br>После:<br><br>';
     print_r($_COOKIES);
    
    Вот скрин результата: http://clip2net.com/s/5QTRUe
     
  5. esche

    esche

    Регистр.:
    9 авг 2009
    Сообщения:
    360
    Симпатии:
    243
    Nei, видимо речь о сохранении.. в пределах одной страницы указанный код будет работать.
    Extaloinez, попробуйте в эту сторону посмотреть:
    Код:
    $do = $_COOKIE['do'];
    unset ($do['re']);
    setcookie('do',$do, $expireTime); //при необходимости указать время, на которое нужно поставить COOKIE
     
  6. Extalionez

    Extalionez Клоун

    Заблокирован
    Регистр.:
    21 авг 2008
    Сообщения:
    368
    Симпатии:
    185
    У тебя куки это переменная вообще чтоль? Где это видано?
     
  7. Nei

    Nei Nosce te ipsum

    Регистр.:
    5 сен 2009
    Сообщения:
    600
    Симпатии:
    468
    Да, само-собой setcookie надо добавить, должно работать по идее

    P.S. Да, $_COOKIE - это переменная, суперглобальный массив
     
  8. Extalionez

    Extalionez Клоун

    Заблокирован
    Регистр.:
    21 авг 2008
    Сообщения:
    368
    Симпатии:
    185
    Ладно, поясню. У пользователя есть несколько cookie
    $_COOKIE['do']['re']['mi'] = 1
    $_COOKIE['do']['re']['mi']['fa']=2 и т.д.
    надо их все удалить.
     
  9. esche

    esche

    Регистр.:
    9 авг 2009
    Сообщения:
    360
    Симпатии:
    243
    формально, (в массиве $_COOKIE) такого быть не может, т.к.
    $_COOKIE['do']['re']['mi']['fa'] выдаст ошибку - нет такого индекса (либо $_COOKIE['do']['re']['mi'] не будет равно единице)

    Тем не менее, браузер может передавать оба варианта
    Код:
    COOKIE[do][re][mi]=1
    COOKIE[do][re][mi][fa]=2
    и активный будет в зависимости от очерёдности.

    А удалять - да, по одному.
    Причём, в указанном случае из разбора массива $_COOKIE не получится получить все варианты.
    Куки целиком можно выдернуть, разобрав результат функции
    Код:
    apache_request_headers()
    либо
    Код:
    $_SERVER['HTTP_COOKIE']
     
    Extalionez нравится это.