Undefined index: чудеса, которых не было

Rezchik

Новичок
Undefined index: чудеса, которых не было

Коллеги, уже 3 года работает мой скрипт, а сегодня на строчки кода


$tovar_basket = $_COOKIE["tovar_cookies"];
$kol_basket = $_COOKIE["kol_cookies"];
$skidka_basket = $_COOKIE["skidka_cookies"];

начало выдавать ошибки:


Notice: Undefined index: tovar_cookies in Х.php on line 4

Notice: Undefined index: kol_cookies in Х.php on line 5

Notice: Undefined index: skidka_cookies in Х.php on line 6

--------------

дальше еще интересней: ошибку выдает в браузерах Опера и ИЕ на моем компе.
В Мозиле без проблем.

----------
дальше еще интересней: у других людей скрипт работает в любых браузерах.

В чем причина, подскажите?
 

Вурдалак

Продвинутый новичок
Rezchik
На своём компе время проверь. В нижнем правом углу обычно.

-~{}~ 31.03.10 22:43:

Ну и дату, естественно
 

Вурдалак

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

Rezchik

Новичок
кстати, прошу проверить работу скрипта: http://rezbaderevo.ru/tovar_list.php?vid_id=31#61

что-нибудь взять в корзинку, будет ли ошибка?
 

Rezchik

Новичок
а в чем прикол-то?! ведь работало 3 года!

и в Мозилле не глючит
 

Вурдалак

Продвинутый новичок
Ну если была бы проблема с часами, то я было бы понятно: Firefox берёт дату/время с какого-то сервера, а Opera и IE — системное время. А так — хз.

P.S. Я пользуюсь Firefox и вижу те же ошибки.
P.P.S. Если под «Mozilla» ты подразумеваешь именно Mozilla Firefox.
 

Вурдалак

Продвинутый новичок
Rezchik
Ну там, наверное, уже сохранены cookies, вот и нет проблем. Чтобы пофиксить ошибку, тебе придётся копаться в коде. По-другому никак.
 

Rezchik

Новичок
E_ALL я включил, потому что в корзинку перестал набираться товар.

-~{}~ 31.03.10 23:19:

скрипт add_to_basket.php начинается со строк -

$tovar_basket = $_COOKIE["tovar_cookies"];
$kol_basket = $_COOKIE["kol_cookies"];
$skidka_basket = $_COOKIE["skidka_cookies"];

и сразу выдает ошибку. Раньше этот кусок работал без вопросов
 

Beavis

Banned
Rezchik
а где в твоем коде предусмотрено что кук может вообще не быть?
если ты не знаешь, у некоторых пользователей вообще куки отключены
 

Rezchik

Новичок
Beavis, это другой вопрос. У меня куки включены, и выдает ошибку...

Может быть такое, что провайдер изменил какие-то параметры настройки сервера?
 

dimagolov

Новичок
Rezchik, куки должны быть не только включены, но и установлены у клиента.

ты 100% ищешь под фонарем, а не там, где потерял. потому что эти ошибки у тебя были всегда, сейчас (при E_ALL) они просто стали отображаться и окончательно нарушили работу приложения (как минимум перестали слаться заголовки и ставиться куки)

Сделай вывод ошибок ТОЛЬКО в лог и начинай править свой говнокод, глядишь, найдешь причину проблем.
http://phpfaq.ru/debug

[telepat mode on]
Причина 100% во времени. Время при установки кук видимо ставиться в пределах 1 часа, а из-за перевода времени и кривого его расчета (и/или кривой таймзоны на сервере) оно попадает в прошлое.
[telepat mode off]
 

Rezchik

Новичок
Слегка разобрался благодаря вам: в Файерфоксе действительно были записаны куки, а в других браузерах нет. Вот их и не может прочитать $_COOKIE

Но я сделал пробный скрипт:

<?
setcookie("tovar_cookies", 1, time()+36000);
?>

запустил его, проверил куки в браузере - НЕ ЗАПИСЫВАЕТ! Может это какие-то фильтры? Уже не знаю..
 

dimagolov

Новичок
посмотри заголовки, которые уходят на клиента из этого скрипта. должно быть текущее время + 10 часов, (в виде DD-Mon-YYYY HH:MM:SS GMT), реально будет скорее всего меньше.
 

Rezchik

Новичок
dimagolov - Вы оказались правы. Посыпаю голову пеплом, дело во времени существования кук. Увеличил, проблема решилась. Спасибо!

Всех также благодарю! Редко бываю на этом форуме, но всегда нахожу с помощью коллектива ответ. Сам программист в дремучем прошлом, но свое дело обязывает php-ить.
 
Сверху