php SetCookie работает в Firefox, но не в IE - PullRequest
4 голосов
/ 22 июля 2010

У меня есть два сценария php

test.php

<?php
 header("location: test2.php");
 setcookie("test", "8kFL4IZfjkBmV7AC", time()+60*60, '/');
 exit;
?>

test2.php

<?php
 var_dump($_COOKIE);
?>

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

В Firefox я получаю следующее:

array
  'test' => string '8kFL4IZfjkBmV7AC' (length=16)

Однако в IE6 я получаю следующее:

array
  'PHPSESSID' => string 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' (length=32)

примечание: у меня специально ушел X'd outPHPSESSID выше!

Кто-нибудь знает, где я иду не так и почему IE6 не показывает мой cookie?

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

Ответы [ 5 ]

3 голосов
/ 22 июля 2010

Вы работаете в локальной среде? IE http://localhost проверить? Если это так, это может вызвать некоторые проблемы с установленным cookie. Я предлагаю установить поле домена для setcookie, если вы работаете на localhost, попробуйте это: setcookie("username", "George", false, "/", false); или установите vhost с именем сервера, отличным от localhost, и используйте его для домена.

Установка cookie с доменом будет выглядеть примерно так:

setcookie("test", "8kFL4IZfjkBmV7AC", time()+60*60, '/', '.domain.com');

Надеюсь, это поможет вам.

1 голос
/ 22 июля 2010

У меня тоже есть эта проблема. Я заметил это на сайте php от кого-то.

При установке файла cookie на странице, которая перенаправляет, файл cookie должен быть установлен после вызова заголовка ('Location: ....');

http://php.net/manual/en/function.setcookie.php

Я все еще не уверен

0 голосов
/ 22 июля 2010

Некоторые браузеры запрещают установку файлов cookie до того, как произойдет взаимодействие с пользователем.Я знаю, что Safari работает, и я верю, что IE работает так же.По сути, все куки будут игнорироваться при первом ответе, полученном с вашего сайта.Я подозреваю, что если вместо этого вы попробуете что-то вроде следующего, оно будет работать как положено:

test0.html

<html>
  <body>
    <a href="test1.php">force user interaction</a>
  </body>
</html>

test1.php

<?php
  header("location: test2.php");
  setcookie("test", "8kFL4IZfjkBmV7AC", time()+60*60, '/');
  exit;
?>

test2.php

<?php
  var_dump($_COOKIE);
?>
0 голосов
/ 22 июля 2010

глядя на ваш пример, вы сначала получаете header (), а затем setcookie (). Сначала попробуйте setcookie (), а затем выполните header ();

0 голосов
/ 22 июля 2010

Один браузер может быстрее реагировать на перенаправление заголовка, чем вы.

Попробуйте перевернуть команды:

 setcookie("test", "8kFL4IZfjkBmV7AC", time()+60*60, '/');
 header("location: test2.php");
...