PHP: как работать с куки? Они разные из разных папок?

176
10 июля 2019, 12:20

Файл php в папке scripts. Выполняю

$parent_id = 3333;
setcookie( "parent_id", $parent_id);

Потом выполняется php в корне сайта, читаю куки:

if (isset($_COOKIE['parent_id'])){
        $parent_id = $_COOKIE[ 'parent_id' ];
    }
    else {
        $parent_id = 9999;
        setcookie( "parent_id", $parent_id);
    }

В итоге, получаются две одноименные куки (смотрю через браузер - просмотр и удаление куки), у одного

имя: parent_id, значение: 9999, путь: /

у другого

имя: parent_id, значение: 3333, путь: /scripts

Как писать/читать куки из разных папок? Мне нужен $parent_id ообщий для всего сайта.

Answer 1

Для начала начнём с теории. Что такое Cookie ? Это пакет информации, который храниться в браузере пользователя и отправляется всякий раз когда пользователь делает запрос на сайт, будь то переход по ссылке или загрузка .css файла. В данном случае то, что вы называете папкой - это не папка. Это настройка path для определённых куки. Браузер, исходя из URL определяет если path начинается также, как и url, то он отправляет куки.

Приведём простой пример.

setcookie(/*Key:*/'test', /*Value:*/3, /*Expire*/0, /*Path:*/ '/hel');

Этот код создатся куки test со значением 3 до закрытия браузера по пути /hel. Браузер будет отсылать эту печеньку на сервер при дуступе к папке /hello_world, к файлу hello.txt и т.д.

Если вы хотите получать доступ к одной и той же печеньке с разных путей, то устанавливайте path на / таким простым образом: setcookie('test', 32, 0, '/');

Советую подробно ознакомиться как с самой документацией языка, так и с конкретно кукисами на сайте php.net: setcookie, а также обратить внимание на сессии, ключевое отличие последних - хранение всех данных на сервере, а не в браузере (кроме id сессии)

READ ALSO
Форма Обратная связь

Форма Обратная связь

Это форма обратной связи, помогите добавить pattern="[а-яА-Яa-zA-Z_]+ и minlength="2" maxlength="100"

132
как добавить пагинацию в wordpress

как добавить пагинацию в wordpress

Добрый деньУ меня вот такой код

165
Почему std::list<char>::iterator не выходит за начало

Почему std::list<char>::iterator не выходит за начало

И почему этот цикл ведет себя как следующий?

171
QGLWidget, отрисовка множества точек в окне OpenGL

QGLWidget, отрисовка множества точек в окне OpenGL

Пытаюсь рисовать множество точекНо проблема в том, что я не знаю как отрисовать точки так, чтобы в начальный момент времени они все попадали...

144