Удаление и изменение Cookies в подкаталогах

Тема в разделе "PHP программирование", создана пользователем shisik, 6 июн 2010.

  1. shisik

    shisik Well-Known Member

    Регистрация:
    26 авг 2007
    Сообщения:
    154
    Симпатии:
    0
    Столкнулся с проблемой. Допустим, есть два скрипта:

    /index.php
    /folder/index.php

    Первый устанавливает куки:

    Код (PHP):
    $name = "username";
    setcookie("name", $name, time() + 3600);
    Дальше если прочитать значение $_COOKIE['name'] в обоих скриптах - оно как и ожидается будет равно "username". Затем пользователь выходит из системы и первый скрипт удаляет куки:

    Код (PHP):
    setcookie("name", "0", time() - 100);
    Теперь если прочитать значение $_COOKIE['name'] в первом скрипте, то будет пустая строка, а вот в /folder/index.php так и останется "username". Почему? Аналогично при изменении значения, например:

    Код (PHP):
    $name = "username2";
    setcookie("name", $name, time() + 3600);
    Как сделать так, чтоб куки менялись во всех папках независимо от того, из какого именно скрипта они устанавливаются?

    Забыл добавить: PHP Version 5.2.6, браузер Firefox 3.0.6
     
  2. nws

    nws Гость

    Код (PHP):
    //create
    $name = "username";
    setcookie("name", $name, time() + 3600, $path = '/');
    //delete
    setcookie("name", "0", time() - 100, $path = '/');
     
  3. shisik

    shisik Well-Known Member

    Регистрация:
    26 авг 2007
    Сообщения:
    154
    Симпатии:
    0
    Так создаётся 2 одинаковых записи, а потом удаляется только одна (смотрел вывод phpinfo())
     
  4. nws

    nws Гость


    Зачем создавать 2 одинаковые записи ? o_O
     
  5. shisik

    shisik Well-Known Member

    Регистрация:
    26 авг 2007
    Сообщения:
    154
    Симпатии:
    0
    Я не знаю, я их и не создаю. Но если добавить '/' в функцию setcookie(), то после её выполнения появляется 2 кука вместо одного. А при вызове setcookie("name", "0", time() - 100, $path = '/'); удаляется только один из них. Второй можно удалить вызовом setcookie("name", "0", time() - 100); Сразу скажу, что до вызова setcookie("name", $name, time() +3600, $path = '/'); все куки были удалены. Информацию о куках беру в phpinfo (раздел HTTP Headers Information).
     
Загрузка...

Поделиться этой страницей