Intereting Posts
Запустить процесс ffmpeg в фоновом режиме Рассчитать запрос типа объединения mysql Неустранимая ошибка: класс «Zend \ Form \ Element» не найден Создание случайного уникального идентификатора с помощью PHP Загрузка параметров внешней среды в Symfony 3.2 с помощью env () во время выполнения возвращает нерешенные значения Список участников MySql, заполненный записями «Сон», приводящих к «Слишком много подключений»? Zend Framework 2 – обтекание $ this-> контента другим макетом Отправка электронной почты с статической страницы html Предотвращение подачи формы дважды PHP + MySQL: разница между буферизированными и небуферизованными запросами Как удалить конечные пробелы и «& nbsp;» от начала и до конца строки в PHP? Подтверждение подписи сервера покупок в приложении для Android, используя php OpenSSL Как добавить массив как свойство объекта в класс, объявленный в PHP-расширении? Заголовок PHP Mail Переместить значение атрибута title в значение атрибута класса в HTML-коде

setcookie () не устанавливает cookie в Google Chrome

Я читаю некоторые уроки PHP о том, как устанавливать файлы cookie. Я заметил, что файлы cookie успешно установлены на FF4 и IE9, однако он не устанавливается в Chrome (11.0.696.60). Файл PHP был отправлен из XAMPP (localhost).

Я попробовал пример из w3schools:

<?php setcookie("user", "Alex Porter", time()+3600); ?> 

И с этого сайта (для локальных окружений):

 <?php setcookie("username", "George", false, "/", false); ?> 

Заранее спасибо.

Решение отключить cookies для IP-адресов и localhost было конструктивным решением. См. Также: https://code.google.com/p/chromium/issues/detail?id=56211

Способы решения этой проблемы включают:

  • Установите локальный домен (например, отредактируйте /etc/hosts чтобы использовать 127.0.0.1 localhost.com ).
  • Используйте http://myproject.localhacks.com/ (что указывает на 127.0.0.1).
  • При настройке файла cookie используйте пустое значение домена.

Например, в PHP :

 setcookie( $AUTH_COOKIE_NAME, $cookie_value, time() + cookie_expiration(), $BASE_DIRECTORY, null, false, true ); 

Здесь значение null указывает, что домен не должен быть установлен.

Примечание: не устанавливать домен запрещает отображение файлов cookie для поддоменов.

Домен должен быть равен NULL.

& Должна быть дана дата истечения срока действия. т.е.

 setcookie("username", "George", time() + (20 * 365 * 24 * 60 * 60), "/", NULL); 

Похоже, это может быть ошибкой с функцией «Инструменты для разработчиков» Chrome. Все время я пытался установить файл cookie (но не извлекал его), и он работал с другим браузером. Это сработало, если вы доверяете сектору просмотра файлов cookie FF или находите файл cookie для IE. В Chrome я полагался на раздел «Cookies» в разделе «Инструменты для разработчиков» («Инструменты разработчика»> «Ресурсы»> «Печенье»).

Я решил сделать еще один шаг и фактически вывести значение cookie с помощью этого скрипта, найденного в WHT ( опубликовано Natcoweb ):

 <?php setcookie('test', 'This is a test', time() + 3600); if(isset($_COOKIE['test'])){ $cookieSet = 'The cookie is ' . $_COOKIE['test']; } else { $cookieSet = 'No cookie has been set'; } ?> <html> <head><title>cookie</title></head> <body> <?php echo $cookieSet; ?> </body> </html> 

И он работал на всех браузерах, включая Chrome (я получаю: «The cookie is This is test»)! Однако инспектор cookie Chrome продолжает показывать «У этого сайта нет файлов cookie». Мне также удалось найти список файлов cookie, хранящихся в настройках Chrome (Options> Under Hood> Настройки контента> Все файлы cookie и данные сайта), и, наконец, нашел cookie (больше шагов для проверки, но, по крайней мере, более точно, чем инструменты разработчика)!

Вывод: файлы cookie устанавливаются, но инструменты разработки Chrome не могут его увидеть по какой-то причине.

Вы проверили свою системную дату? $ date И если это старое время, вы должны изменить свое время $ date -s 2007.04.08-22: 46 + 0000

Надеюсь, это поможет. У меня была такая же проблема, и она работала

Я столкнулся с той же проблемой, когда попытался, как показано ниже

 setcookie("gb_role",base64_encode($_SESSION["role"]),time()+60*60*24*30); 

когда я изменил его ниже

 setcookie("gb_role",base64_encode($_SESSION["role"]),time()+2592000); 

Я просто отлично работал, разница вместо времени () + 60 * 60 * 24 * 30 Я просто сделал время () + некоторое числовое значение. Я знаю, что это не имеет смысла, но это сработало.

Этот код работает для меня в IE, Chrome и FF

 if($_COOKIE['language']==NULL || empty($_COOKIE['language'])) { $dirname = rtrim(dirname($_SERVER['PHP_SELF']), '/').'/'; $expire=time()+31536000; setcookie("language", "English",$expire,"$dirname","mydomain.com",false,false); }