Pull to refresh

Ошибки начинающих PHP разработчиков

Reading time3 min
Views10K
25 PHP
Подборочка ошибок начинающих PHP разработчиков…

  1. Книга по PHP за 2002 год как источник знаний — это уже история, советую «PHP 5. Профессиональное программирование» — Э. Гутманс, С. Баккен — ISBN:5-93286-083-9, иль даже поновее...
  2. Использование web-сервера, где «всё включено» (Denwer и еже с ним) — научитесь сетапить сами, потом успеете перейти на полуфабрикаты
  3. Используем простенький редактор с подсветкой синтаксиса — пора взрослеть и переходить на IDE — с IDE увеличивается скорость разработки, особенно в больших проектах, где не один десяток классов.
  4. В php.ini включен параметр register_globals — отключаем это ЗЛО, по умолчанию отключен, но Вам он зачем-то понадобился
  5. Реализация «index.php» содержащая приблизительно следующий код: <?php require_once $_GET['mod']; ?> — это уязвимость, зовется PHP инъекцией — всегда проверяйте входные данные.
  6. Реализация авторизации, когда строка запроса к БД содержит что-то типа: «SELECT * FROM users WHERE login=».$_GET['login']." AND password=".$_GET['password'] — читаем что такое SQL инъекции (это относится ко всем входным данным и SQL запросам)
  7. Доверяем POST переменным больше чем GET? — Будьте уверены подделать так же легко, так что проверяем
  8. AJAX это хорошо, дырявый AJAX — плохо — не забывай проверять права доступа для функций вызываемых в AJAX'е
  9. Не проверяем залитые пользователями файлы — теперь и мы знаем что такое PHP Backdoor
  10. Присваивание в условии: <?php if ($auth = DEFINE_NAME) {… } ?> такую ошибку Вы будете долго искать — старайтесь избегать подобных конструкций (используйте конструкцию ввида <?php if (DEFINE_NAME == $auth) {… } ?> — если пропустите один знак «равно» — интерпретатор выдаст ошибку)
  11. «Cannot send session cookie — headers already sent by… » — пытаемся установить куки, когда заголовок уж послан браузеру — незаметили пустую строку или пробел перед первым тегом <?
  12. Переписываем функции PHP — воспользуйтесь поиском по manual'y
  13. Выражение <?php if (array_search('needle', $array) != FALSE) {...} ?> — не сработает если искомый элемент доступен по ключу 0 либо "" — читаем внимательней manual по каждой функции
  14. Работаем под windows, хостинг на linux и сайт не поднимается — имя файла index.php, Index.php, INDEX.php и т.д. это все разные файлы для linux систем, а мы про это забыли
  15. Отключение вывода ошибок — код должен быть чистым  — так что error_reporting(E_ALL) Вам в помощь, следите даже за Notic'ами
  16. Залив проект на хостинг — отключите вывод ошибок на экран — логируйте их в файл — не будете краснеть потом
  17. PHP файлы имеют не стандартное расширение (к примеру .inc вместо .php) — если не защитить такие файлы, то может быть очень стыдно
  18. В рассчете на short_tags, поленились писать польностью <?php… ?> — теперь на новом хостинге переписываем шаблоны
  19. Понадеялись на magic_quotes, теперь наше приложение надежно как швейцарский… сыр
  20. Соблюдай стандарты кодирования и пиши комментарии к коду — твои последователи скажут спасибо
  21. Не пиши маты в сообщениях об ошибках и комментариях — заказчик может просматривать и тогда прийдется долго оправдываться
  22. Читают статью http://php.spb.ru/php/speed.html и думают, что только так можно/нужно оптимизировать код — это «блошиная» оптимизация относится к PHP3
  23. Реализуем функционал БД средствами PHP — array_search вместо WHERE, ну и другие чудеса незнания SQL
  24. Стучимся к БД в рекурсии — стараемся обходить подобные реализации
  25. Не нужно забивать гвозди пасатижами — «Мне надо реализовать гостевую книгу — возьму-ка я свой любимый набор библиотек на 6 мегабайт»
  26. Узнали Smarty, и теперь уверены, что научились разделять логику и отображение
  27. Проверяем ВСЕ входные данные, XSS уязвимости нам не нужны


Если есть что добавить — пишем в комментариях…

P.S. Изначально было перечислено 25 ошибок, оттель и картинка такая…
Tags:
Hubs:
+69
Comments230

Articles