Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Как отлаживаются скрипты


Автор: skyboy 15.3.2008, 22:34
Ну и каша...

Во первых, 
Цитата(SneG0K @  15.3.2008,  04:00 Найти цитируемый пост)
 Не работают куки и не регистрируется сессия.  Есть следующий алгоритм:

Это заявление логически необосновано. Чтобы говорить, что не работают куки, надо писать код, который проверяет, работают ли куки.
И дело не в том, что ты говоришь. А в том, как ты воспринимаешь ситуацию.
Gрограммист тем и отличается от юзера, что основывается в своих выводах на фактах - иначе ему просто никогда не найти ошибку.
Gоэтому программист всегда проверяет свои утверждения.
Думаем, что не работают куки - проверяем работу кук, скриптом
Код

setcookie("user","test",0);
echo $_COOKIE["test"];

Если не работают - разбираемся. Только с куками, и ничем больше. 
Если работают - ищем проблему дальше.

Думаем, что не работают сессии? Проверяем, тестовым скриптом, например, отсюда: http://phpfaq.ru/sessions
Если не работают - разбираемся. Только с сессиями, и ничем больше. 
Если работают - ищем проблему дальше.

Дальше - значит, что проблема не в куках и не в сессиях, а в алгоритме.
Алгоритм надо ОТЛАЖИВАТЬ. Слово написано большими буквами потому, что это главное слово в программировании.
Отладка - это многоуровневое пошаговое выполнение. Разделяем задачу на не свзанные между собой сегменты (шаги), и каждый выполняем построчно (по шагам). На каждом шаге проверяя корректность данных.

Мы уже начали отлаживать, проверяя сегменты по работе с куками и сессиями.
Теперь проверяем пошагово основной текст.
К примеру, что у тебя находится в переменной $session?
Какое значение выставляет куке оператор setcookie("user",$session,0);?
А эта ветка case вообще выполняется?
Не знаешь. А надо знать.

Вот в этом и заключается работа программиста. Не switch - case писать. А знать, какое значение имеет каждая переменная в каждый момент выполнения программы. Не все время знать, конечно. А тогда, когда он занимается отладкой.
И руководствоваться логикой.
То есть, описание ситуации не на уровне "я поставил куку, а она не работает", а "я выставил куку с такими-то параметрами".
Все, ВСЕ свои действия надо проверять! Буквально каждую строчку.

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

И убери из кода ненужную session_register и совсем уж чудовищную session_destroy
Автор: http://vingrad.ru/@Feldmarschall Источник: http://forum.vingrad.ru/index.php?show_type=forum&showtopic=200750

Автор: DioNiR 16.3.2008, 00:22
Лично мой способ ОТЛАЖИВАТЬ скрипты. если что то не работает но ошибки нет то в логических проверках операторов ставлю 
Код
echo 1;

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

Автор: awers 16.3.2008, 01:16
Zend Студио в руки. Ну конечно "echo 1;" и ПОНИМАНИЕ не повредит процессу )

Автор: Feldmarschall 16.3.2008, 04:53
Понимание, кстати, да - ключевой момент. 
То есть, надо, разумеется, понимать, что делает твоя программа в каждый момент времени. Без этого все остальное бесполезно, и даже Zend Studio не поможет smile

Автор: awers 16.3.2008, 04:56
Feldmarschall, ну почему-же... можно тему на форуме создать и кричать что ничего мол не работает...  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)