Виртуальный Брест
Главная Портал Форум Рассылки Контакт Для клиентов Статьи

Покупаешь у нас? Доставка в Брест!
Покупаешь у нас? Доставка в Брест!
 
Горные лыжи из Бреста
Горные лыжи из Бреста
 
Поддержи инвалидов по зрению
Поддержи инвалидов по зрению
 

Виртуальный хостинг - дом для вашего сайта - лучшее предложение в Бресте!


Полный список глав книги

Простейшие ошибки


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

  • Самое распространенное - не стоит завершающая оператор точка с запятой. Не ставится она только в конструкции if () {} {} Основной признак - ошибка в следующей строке за тем оператором, в котором нет точки с запятой. В окно браузера, если только это разрешено, посылается сообщение об ошибке, имя и путь к файлу, в котором произошла ошибка и порядковый номер строки (вот где нам пригодится нумерация строк!). Выглядит это следующим образом:

Parse error: parse error in c:\usr\local\public_html\host\virtual\index.phtml on line 2

  • При сравнении на равенство двух переменных ставится два знака равенства. Исключений нет. Основной признак - скрипт работает, но не так как это от него ожидается. Найти такую ошибку бывает порой очень трудно. Ведь сообщений не появляется, так как с точки зрения парсера тут нет ошибки. Бороться можно только одним способом – внимательно писать сравнения и не забывать об этом правиле.
  • В конструкции if () {} {} отсутствует или стоит лишний завершающий знак - } Исключений нет. Признак этой ошибки очень простой, и позволяет детектировать эту ошибку очень просто. При запуске скрипта на выполнение интерпретатор выдает ошибку в самой последней строчке кода, где стоит завершающий тег ?>. Однако найти где именно не стоит кавычка, бывает не так уж и просто. Придется перелопатить весь код. Иногда меня выручала обычная интуиция – вместо того, что бы искать ошибку, исследуя весь код, я ставил ее в предполагаемом месте и смотрел, как работает программа. Раза с 5-го все получалось. Но это уже из области личных пристрастий.

А вот теперь более сложный вопрос по ошибкам. На самом деле, его следовало бы рассмотреть чуть позже, после того, как мы рассмотрим примеры работы сессий и cookie. Что это такое? Мы познакомимся чуть позже на примерах, и Вы все узнаете. Но раз уж тут у нас разговор зашел об элементарных ошибках программиста, я не могу не упомянуть одну очень важную и нужную проблему. Речь идет о заголовках.

Давайте рассмотрим, как вообще работает браузер с сервером. А работает он с ним по специальному протоколу, который называется «HTTP». Когда Вы вводите адрес в адресной строке браузера и нажимаете ввод, программа посылает именно HTTP-запрос серверу, и на этот запрос сервер всегда отвечает, если только он доступен. Так вот, первыми в ответе сервера всегда идут так называемые «HTTP»-заголовки, и только потом уже могут идти какие-то символы, HTML, или картинки. Сервер устроен так, что заголовки посылаются автоматически перед любыми символами, даже перед пробелом. Это значит, что если хоть один символ ушел в браузер, заголовки уже давно там же и вторично их послать никак нельзя. А PHP умеет работать с этими заголовками, используя их при работе, например, с сессиями, cookie, header и т.д.

Вот тут-то и возникает эта ошибка. Ее текст в окне браузера может выглядеть примерно так: Warning: Cannot add header information - headers already sent by (output started at /site/name.phtml:3) on line 5. Анализ этой строчки дает нам следующее. Ошибка отправки заголовков. Дальше РНР сообщает, в каком скрипте и в какой его строке (output started at /site/name.phtml:3) произошел вывод информации, вызвавший автоматическую посылку заголовков. Очень легко найти и исправить. Может быть там HTML теги, может быть, echo, а может и просто пустая незамеченная строка или пробел перед первым тегом <?.

Очень часто такую ошибку вызывает файл, подключаемый через include, в котором либо есть какой-то вывод, либо пустая строка после закрывающего PHP тега - обнаружить ее очень трудно. Для решения этой проблемы нужно функцию header() (или session_start(), setcookie), поместить ДО любого вывода в браузер. Просто перенести повыше в скрипте.

Эта ошибка появляется не оттого, что у вас в скрипте "что-то написано выше". А потому, что РНР выводит что-то в браузер. Это не обязательно код. Это может быть сообщение об ошибке, может быть пробел или HTML тег. Речь идет о любом символе, отправленном в браузер, а не только о тех, которые браузер отображает неискушенному пользователю. У HTML страниц есть исходный текст, и именно он является результатом работы PHP скрипта, а не то, что показывает на экране браузер пользователю. Добраться до исходного кода HTML можно достаточно легко, надо в браузере найти в меню ВИД-Просмотр HTML-кода.

Не забывайте об этом простом правиле, и ошибка не будет Вас тревожить.

Читать еще...



Трис Хассей

WordPress для профессионалов
В настоящее время WordPress является одной из самых популярных платформ для создания блогов и сайтов. Версия 3.0 представляет массу возможностей, которыми надо...

Алан Купер, Роберт Рейман, Дэйв Кронин

Алан Купер об интерфейсе. Основы проектирования взаимодействия
Когда в 1995 году увидело свет первое издание "About Face: The Essentials of User Interface Design ", идея проектировать продукты исходя из целей людей казалась революционной....

Алан Купер, Роберт Рейман, Дэйв Кронин

Алан Купер об интерфейсе. Основы проектирования взаимодействия
Когда в 1995 году увидело свет первое издание "About Face: The Essentials of User Interface Design ", идея проектировать продукты исходя из целей людей казалась революционной....

Лэнс Лавдэй

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

    Информация

Главная - переход на начало
Тарифы на Российский хостинг
Правила - что можно а что нет
Заказ - сделайте это сейчас
Выбор домена - найди свое имя
Регистрация домена - купить
Оплата - варианты для всех
Панель управления Россия
Панель управления Беларусь
Вопросы и ответы - информация
Разработка сайтов - сопровождение
Виртуальный Брест - портал
Контакт - обратная связь
Наш форум - пообщаемся?

Список доменов
в которых доступна бесплатная регистрация имен при покупке хостинга, а так же открытие поч- тового ящика:

Новости Бреста:

Второй порыв теплосетей в Бресте - двенадцать многоэтажных домов и один детский сад остались без тепла
Почти тонну мёда задержали налоговики при проверке в Бресте
Зарплата в конвертах в Бресте - видео
Трое жителей Кавказа в "поисках работы" забрались прямо в лес в пограничную зону
Профилактика квартирных краж - важно
Современный животноводческий комплекс на 1500 голов строится в СПК "Королевский" Кобринского района - фото
Результаты проходящей на территории Брестской области акции "Не упусти свой шанс"
Осенний месячник по наведению порядка на земле проходит на Брестчине - важно
В Лунинецком районе в водоеме нашли автомобиль с телом внутри
ГАИ: брестчанин решил стать маршрутчиком и в пьяном состоянии вез горожан

© Виртуальный Брест 2001 - 2009 Автор проекта: Андрей Кухарчик Дизайн: Partgraphic