(PHP) Я установил файл cookie на странице login.php следующим образом:
setcookie('cookie_id',$id);
Я печатаю файл cookie, и я вижу правильное значение, но когда я меняю страницу с помощью:
header($login_url);
Я теряю все файлы cookie, и я не знаю, почему. Кто-нибудь может мне помочь?
Вы должны указать /
как путь в функции setcookie()
, поэтому cookie будет доступен по каждому пути вашего сайта. Сделать это:
setcookie('cookie_id', $id, 0, '/');
Обратите внимание, что третьим аргументом является время истечения срока действия, которое по умолчанию установлено на 0. Согласно документации это означает, что:
Если установлено значение 0 или опущено, файл cookie истекает в конце сеанса (когда браузер закрывается).
Если у вас есть человеческие URL-адреса или подпапки (например, http://www.domain.com/path1/path2/), вы должны установить путь cookie к / для работы для всех путей, а не только для текущего.
setcookie('cookie_id', $cookie_id, time() + 60*60*24*30, '/');
Из руководства по PHP:
Путь на сервере, на котором будет доступен cookie. Если установлено значение '/', файл cookie будет доступен во всем домене. Если установлено значение '/ foo /', cookie будет доступен только в каталоге / foo / и всех подкаталогах, таких как / foo / bar / домена. Значение по умолчанию – это текущий каталог, в который установлен файл cookie.