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

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

almix
Разработчик Loco, автор статей по веб-разработке на Yii, CodeIgniter, MODx и прочих инструментах. Создатель Team Sense.
Вы можете почитать все статьи от almix'а.
- 0 Composer – пакетный менеджер PHP. Что и как? (22.07.2014)
- 0 MySQL и PHP: Вычисление возраста (количество лет) по дате рождения (20.06.2017)
- 0 Как изменить часовой пояс на сервере (16.11.2013)
- 0 PHP: Как удалить файлы по маске? (07.11.2013)
- 0 Регулярные выражения в PHP (12.04.2014)
- 0 Защита от спама в phpBB3 без капчи (09.10.2013)
- 0 Php функция implode внутри запроса SELECT к MySQL. (02.09.2013)
- 0 Как убрать папку www из денвера? (22.03.2013)
- 0 Устанавливаем и настраиваем WampServer (аналог MAMP в Mac и возможная замена Denwer'у) на Windows (22.03.2013)
- 0 Полезные возможности PhpStorm и настройка горячих клавиш (14.03.2013)
- Оборачиваем изображения в ссылки с помощью хука add_filter('the_content', ...) в functions.php (14.08.2019)
- Добавляем форму отправки обратного звонка на сайт (по Javascript и с ReCaptcha) (29.07.2019)
- Преимущества ИТ–аутсорсинга (25.03.2019)
- Отладка PHP кода в консоли браузера (22.03.2019)
- Ошибка в phpmyadmin: count(): Parameter must be an array or an object that implements Countable (27.03.2019)
- Две или более reCaptcha на одной странице. Несколько рекапч на странице (25.02.2019)
- Оверлей кнопка на видео HTML5 video overlay play button (15.02.2019)
- Битрикс: Формирование цены - отделить пробелом тысячи от сотен (04.02.2018)
- Настраиваем красивое меню типа гамбургер на мобильных, используя плагин mmenu. На примере 1С-Битрикс (04.02.2018)
- Артефакты при ресайзе библиотекой GD изображений с однородным (белым) фоном (07.12.2017)
- Задаем область печати документа для PHPExcel (05.12.2017)
- Как включить SSL и сделать редирект на HTTPS. На примере Opencart 2 (03.12.2017)
- Смена кодировки Битрикса с windows-1251 в UTF-8 (utf8) (01.12.2017)
- Свой дизайн кнопок социальных сетей для сайта. Кнопки "Поделиться" (19.06.2017)
- Ошибка: Invalid argument supplied for foreach() in ... (09.04.2017)
