Подтвердить что ты не робот

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);
?>

Спасибо заранее.

4b9b3361

Ответ 1

Отключение файлов cookie для 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 указывает, что домен не должен быть установлен.

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

Ответ 2

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

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

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

Ответ 3

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

Я решил сделать еще один шаг и фактически вывести значение cookie с помощью этого script, найденного в 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" )! Однако инспектор Chrome cookie продолжает показывать: "У этого сайта нет файлов cookie". Мне также удалось найти список файлов cookie, хранящихся в настройках Chrome (Options > Under Hood > Настройки содержимого > Все файлы cookie и данные сайта) и, наконец, нашел cookie (больше шагов для проверки, но, по крайней мере, более точных, чем инструменты разработчика)!

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

Ответ 4

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

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

Ответ 5

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

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 Я просто сделал время() + некоторое числовое значение. Я знаю, что это не имеет смысла, но это сработало.

Ответ 6

Этот код работает для меня в 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);
}