#php #cookies
Вопрос:
Я не знаю, задавался ли этот вопрос раньше, но я не знаю, что искать по этой проблеме. У меня есть страница с формой и запросом AJAX. PHP-код асинхронно проверяет, существует ли пользователь, и устанавливает файл cookie, когда пользователь запрашивает автоматический доступ. Файл cookie настроен, код, похоже, работает хорошо. Если я попытаюсь прочитать содержимое файлов cookie на той же странице с формой входа в систему (после обновления это нормально — я знаю), я смогу это увидеть. Но когда я пытаюсь прочитать то же содержимое файла cookie с другой страницы, файл cookie не существует. Это как если бы он не был установлен. Как это возможно?
Чтобы провести тест, я также отключил перенаправление JS, как только скрипт jquery получил ответ об успешном выполнении, но это не устраняет проблему.
PHP, который запускается с запросом jquery.ajax (он показывает мне правильный текст):
setcookie("access", $string, time() 31536000);
if(isset($_COOKIE['access'])) echo "Cookie exists.<br>";
echo "Cookie content: ".$_COOKIE['access'];
connection.php вызывается на других страницах веб-сайта (файл cookie кажется пустым или несуществующим):
require_once("connection.php");
if(isset($_COOKIE["access"]))
{
echo "I'm in!<br>";
echo "Cookie content: ".$_COOKIE['access'];
}
Ответ №1:
setcookie
Функция принимает 4-й параметр с именем $path
, который ограничивает доступ к файлам cookie. По умолчанию $path-это страница, на которой установлен файл cookie. Если вместо этого вы хотите, чтобы файл cookie был доступен со всех страниц, вам необходимо установить параметр $path в корневой каталог вашего домена, поэтому /
.
Вот краткое исправление для вашего кода
setcookie("access", $string, time() 31536000, "/");
Более подробную информацию о параметрах setcookie можно найти в официальной документации по PHP.
Комментарии:
1. Быстро и безболезненно! Спасибо вам 🙂