Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Не работают куки
 
 автор: Shorr Kan   (03.05.2007 в 01:41)   письмо автору
 
 


<?

if(isset($_GET['a'])){print "!".$_COOKIE['a']."!";exit;}
setcookie("a",1,time()+120);
header("Location: ?a=1");

?>



Простейший пример. Итог: в мозилле выдает "!1!" , а в IE - "!!". То есть, в ИЕ куки не ставятся. Причем, практически у всех. Почему?

Только что проверил на другом сервере - там работает.

Сервер, откуда IE куки не принимает - держит php 5.2.1
Тот, откуда принимает - 4.4.6

   
 
 автор: Valick   (03.05.2007 в 08:36)   письмо автору
 
   для: Shorr Kan   (03.05.2007 в 01:41)
 

Проверте значения параметров регистр глобалс в 5.2.1 и в 4.4.6 (да и вообще сравните настройки РНР и там и там)
И может это не столь существенно но мне лично больше импонирует:

header("Location: {$_SERVER["PHP_SELF"]}?a=1");

   
 
 автор: Trianon   (03.05.2007 в 10:02)   письмо автору
 
   для: Shorr Kan   (03.05.2007 в 01:41)
 

попробуйте написать

header("Location: "."http://". $_SERVER['HTTP_HOST'].$_SERVER["PHP_SELF"]."?a=1");

Иначе у Вас серверный редирект происходит, а не клиентский.

to Valick: registrer globals в этом примере вообще не влияет. Код чисто написан.

   
 
 автор: Valick   (03.05.2007 в 11:39)   письмо автору
 
   для: Trianon   (03.05.2007 в 10:02)
 

registrer globals в этом примере вообще не влияет
А вдруг?) Ну ладно, но главный вопрос не в этом, а в том что:
Итог: в мозилле выдает "!1!" , а в IE - "!!"
Может ли как-то влиять строка:

header("Location: "."http://". $_SERVER['HTTP_HOST'].$_SERVER["PHP_SELF"]."?a=1");

на тип, а то и версию браузера?

   
 
 автор: Valick   (03.05.2007 в 11:46)   письмо автору
 
   для: Valick   (03.05.2007 в 11:39)
 

Кажись уже сам потихоньку начинаю врубаться.
Trianon, спасибо.

   
 
 автор: Trianon   (03.05.2007 в 11:52)   письмо автору
 
   для: Valick   (03.05.2007 в 11:39)
 

"nj >registrer globals в этом примере вообще не влияет
>А вдруг?)
Увы :)
Ну ладно, но главный вопрос не в этом, а в том что:
>Итог: в мозилле выдает "!1!" , а в IE - "!!"
>Может ли как-то влиять строка:
>

>header("Location: "."http://". $_SERVER['HTTP_HOST'].$_SERVER["PHP_SELF"]."?a=1");
>

>на тип, а то и версию браузера?

Может. На самом деле - область и для меня достаточно туманна, и вероятно, стоит поставить несколько экспериментов. .
Насколько мне известно, серверный и клиентский редирект (первый исполняется сервером apache, и до клиента вообще событие редиректа не доходит, он вынужден принимать отклик редиректа за чистую монету; в то время как второй отправляется в виде статуса и исполняется клиентом) отличаются фактом явного указания адреса сервера в URI переброса.

Поведение браузеров по идее отличаться не должно, но раз отличается - значит может.
Возможно, они по-разному реагируют на факт расстановки кукисов в клиентском редиректе.
Возможно - на отсутствие параметра области действия.... Короче, тут тоже не всё ясно.

   
 
 автор: Shorr Kan   (03.05.2007 в 12:27)   письмо автору
 
   для: Trianon   (03.05.2007 в 11:52)
 

К сожалению, Trianon, не то. Во-первых - проверил. Тот же эффект. Во-вторых - идентичный код на другом сервере вполне работает. Разбираюсь с сервером...

Не сработал даже вариант:

<?
if(isset($_GET['a'])){print "!".$_COOKIE['a']."!";phpinfo();exit;}
setcookie("a",1,time()+120,"/");
?>
<script>top.location.href="?a=1";</script>

   
 
 автор: Trianon   (03.05.2007 в 12:29)   письмо автору
 
   для: Shorr Kan   (03.05.2007 в 12:27)
 

а что показывает панель ieHttpHeaders?

   
 
 автор: Shorr Kan   (03.05.2007 в 12:33)   письмо автору
 
   для: Trianon   (03.05.2007 в 12:29)
 

Ну....


Set-Cookie: a=1; expires=Thu, 03-May-2007 06:28:12 GMT; path=/


.... это там есть - в том блоке, где идет 302 на ?a=1 ... Впечатление такое, что коробочка с мозгами не понимает $_COOKIE ...
Но ведь из мозиллы работает *задумчиво*

   
 
 автор: Shorr Kan   (03.05.2007 в 12:35)   письмо автору
 
   для: Shorr Kan   (03.05.2007 в 12:33)
 

Интересный момент - яваскриптовую установку куков ИЕ понимает нормально. php - нет. Но заголовок setcookie приходит...

   
 
 автор: Trianon   (03.05.2007 в 12:44)   письмо автору
 
   для: Shorr Kan   (03.05.2007 в 12:33)
 

Что-то страшное У Вас со временем устаревания. 06:28 GMT это больше чем на час раньше чем сейчас.
Либо с установками текущего часового пояса и летнего временни.
Либо не у Вас а на сервере.

   
 
 автор: Shorr Kan   (03.05.2007 в 14:53)   письмо автору
 
   для: Trianon   (03.05.2007 в 12:44)
 

Так ведь это же серверное время. -4 от гринвича, если не ошибаюсь.

Не совсем понял ошибки.

   
 
 автор: Shorr Kan   (03.05.2007 в 21:36)   письмо автору
 
   для: Shorr Kan   (03.05.2007 в 14:53)
 

А вот теперь - СОВСЕМ не понял ошибки.


не работает

<?
setcookie
("a",1,time()+120); 
?>



работает

<?
setcookie
("a",1); 
?>



Что такое?..

   
 
 автор: bronenos   (03.05.2007 в 22:06)   письмо автору
 
   для: Shorr Kan   (03.05.2007 в 21:36)
 

первый ставит cookie на 2 минуты

   
 
 автор: Shorr Kan   (03.05.2007 в 23:29)   письмо автору
 
   для: bronenos   (03.05.2007 в 22:06)
 

Спасибо. Я знаю. Только не работает. А без указания времени - работает.

   
 
 автор: Trianon   (04.05.2007 в 00:30)   письмо автору
 
   для: Shorr Kan   (03.05.2007 в 23:29)
 

Посмотрите, что у Вас выводит функция time() на разных серверах, и сравните её значения со значением на локальной машине.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования