Топ-10 ошибок PHP, которые совершают все новички
Вы пишете код. Нажимаете «обновить». Видите пустой белый экран.
Это происходит потому, что по умолчанию PHP не выводит ошибки. Во время разработки необходимо принудительно включить их отображение.
Добавьте эти строки в начало ваших файлов:
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
Не используйте это в рабочей среде (production). Вместо этого используйте логи в файлах.
Вот 10 распространенных ошибок и способы их исправления:
Отсутствие точек с запятой PHP перестает работать, если вы забудете точку с запятой. Это часто приводит к «тихому» сбою. Исправление: Убедитесь, что каждая инструкция заканчивается точкой с запятой.
Нестрогое сравнение (== против ===) Оператор двойного равенства выполняет приведение типов. Это приводит к логическим ошибкам. Исправление: Используйте тройное равенство (===). Оно проверяет и значение, и тип.
Неопределенные переменные Использование переменной до того, как ей присвоено значение, нарушает логику программы. Исправление: Используйте оператор объединения с null (null coalescing operator). Пример:
$name = $_GET['name'] ?? 'Guest';Область видимости глобальных переменных Функции не видят переменные, объявленные вне их области видимости. Исправление: Передавайте переменные в функции в качестве аргументов.
SQL-инъекции Создание запросов с использованием пользовательского ввода позволяет хакерам красть данные. Исправление: Используйте подготовленные выражения (prepared statements) с плейсхолдерами (?).
Межсайтовый скриптинг (XSS) Прямой вывод пользовательского ввода позволяет вредоносным скриптам выполняться в браузере. Исправление: Оборачивайте вывод в
htmlspecialchars().Заголовки уже отправлены (Headers Already Sent) Вы не можете перенаправить пользователя, если уже отправили какой-либо текст в браузер. Даже один лишний пробел может вызвать эту ошибку. Исправление: Размещайте вызовы
header()в самом начале файла. Всегда используйтеexit()после перенаправления.Несуществующие ключи массива Обращение к несуществующему ключу формы вызывает предупреждения (warnings). Исправление: Используйте оператор объединения с null для всех данных из
$_POSTи$_GET.Include против Require
includeлишь выводит предупреждение, если файл отсутствует. Скрипт продолжает работу и аварийно завершается позже. Исправление: Используйтеrequire_onceдля критически важных файлов, таких как подключение к базе данных.Непроверенные возвращаемые значения Многие функции PHP возвращают
falseв случае ошибки. Если вы сразу используете этот результат, это приведет к новым ошибкам. Исправление: Проверяйте, не является ли результат значениемfalse, прежде чем использовать его.
Краткие советы для успеха:
- Включайте отчет об ошибках при разработке.
- Используйте
===для всех сравнений. - Очищайте все пользовательские данные.
- Проверяйте возвращаемые значения.
Источник: https://dev.to/bikkisingh/top-10-php-bugs-every-beginner-makes-and-how-to-fix-them-1anh