Мне нужно хранить отдельные куки для отдельных каталогов на моем сайте. Я прочитал несколько статей о том, как это можно сделать, но я не смог найти решение для меня. Я выполнить одну из этих строк на каждой странице (COOKIE_PATH = '/city_dir/'
):Различные cookie сеанса для разных путей
session_set_cookie_params($lifetimeSeconds, COOKIE_PATH);
или
session_save_path(COOKIE_PATH);
Последовал:
if (isset($_COOKIE['PHPSESSID'])){
$data = $_COOKIE['PHPSESSID'];
$timeout = time() + $lifetimeSeconds;
session_start();
setcookie('PHPSESSID', $data, $timeout);
}
else {
session_start();
}
session_regenerate_id(true);
Первая линия (session_set_cookie_params
) звучало как правильное решение , но когда я использую эту строку, никакие файлы cookie не отображаются вообще в списке инструментов веб-разработчика Chrome, и я не могу войти на сайт.
Вторая строка не похожа на правильное решение (кажется, я должен иметь дело с пустым файлом, а не с контуром сохранения), но он приближается. При первой загрузке страницы я вижу cookie для пути «/». Если я обновляю страницу, этот файл cookie останется, и файл cookie указан для пути COOKIE_PATH
. К сожалению, я все еще не могу войти в систему. Я искал и пробовал много вариантов на всех выходных, но не мог заставить ничего работать. Что мне не хватает? Я использую PHP версии 5.3.18.
[session_save_path()] (http://php.net/session_save_path) не имеет ничего общего с куки-файлами; он устанавливает каталог сервера, где материал хранится. На самом деле, я не могу понять актуальность вашего кода после 'session_set_cookie_params()'. Вероятно, проблема состоит в том, что: 1) 'COOKIE_PATH' содержит недопустимый путь (вы не говорите это явно, но вы предлагаете отказаться от ведущей косой черты). 2) Вы также используете сеансы в корне вашего сайта –
' session_set_cookie_params' должно сработать. У меня есть рабочая реализация, которая делает именно то, что вы описываете. Дважды проверьте свои предположения. Сессия началась? Вы видите, что сеанс создается на сервере? Получаете ли вы сеанс cookie? – Halcyon
Иногда браузеры могут показать странное поведение, если у вас есть cookie сеанса для родительского пути; они отправят неправильный файл cookie. Очистите файлы cookie, чтобы убедиться, что вы не сталкиваетесь с этой проблемой. – Halcyon