PHP
Как вывести все переменные PHP на странице для отладки
Короткий ответ: для отладки отдельных переменных используйте var_dump() или print_r(), а для списка переменных текущей области — get_defined_vars(). Но вывод всех переменных нельзя оставлять на публичном сайте, потому что там могут быть пароли, токены, пути и данные пользователя
Такой вывод нужен только в разработке: быстро понять, что лежит в переменной, пришли ли данные формы, какие серверные значения доступны и почему условие сработало не так
Вывести одну переменную
<?php
$name = 'Динар';
var_dump($name);
Результат покажет тип и значение
string(10) "Динар"
var_dump() полезен, когда важен не только текст, но и тип значения
Вывести массив красиво
<?php
$user = [
'name' => 'Динар',
'role' => 'admin',
];
echo '<pre>';
print_r($user);
echo '</pre>';
Тег <pre> сохраняет переносы и отступы, поэтому массив проще читать в браузере
Вывести все переменные текущей области
<?php
$title = 'Урок PHP';
$count = 3;
echo '<pre>';
print_r(get_defined_vars());
echo '</pre>';
get_defined_vars() возвращает массив всех переменных, определенных в текущей области видимости. В нем могут оказаться и служебные массивы вроде $_SERVER
Вывести GET и POST
Для формы чаще всего достаточно посмотреть конкретные суперглобальные массивы
<?php
echo '<pre>';
print_r($_GET);
print_r($_POST);
echo '</pre>';
Если форма отправлена методом post, данные будут в $_POST. Если параметры переданы в адресной строке, они будут в $_GET
Вывести серверные переменные
<?php
echo '<pre>';
print_r($_SERVER);
echo '</pre>';
$_SERVER показывает адрес запроса, метод, путь к файлу, данные веб-сервера и часть окружения. На публичном сайте такой вывод особенно опасен: он раскрывает технические детали
Безопасный отладочный помощник
Можно сделать маленькую функцию
<?php
function dumpValue(mixed $value): void
{
echo '<pre>';
var_dump($value);
echo '</pre>';
}
$items = ['PHP', 'HTML', 'MySQL'];
dumpValue($items);
Так отладочный вывод легче найти и удалить после проверки
Как не показать отладку всем пользователям
В учебном проекте можно просто удалить var_dump() после проверки. В реальном проекте вывод отладки должен быть доступен только разработчику. Например, по локальному окружению или отдельному флагу, который не включен на рабочем сайте
Не делайте так на продакшене
print_r(get_defined_vars());
Это может раскрыть сессии, email, IP, пути к файлам и внутренние настройки
Мини-практика
Создайте форму с полями name и email, отправьте ее методом POST и выведите $_POST через print_r() в <pre>. Затем замените общий вывод на аккуратный вывод только двух полей, уже через htmlspecialchars()
Частые ошибки
Оставляют var_dump на сайте Отладочный вывод нужно удалять перед публикацией
Выводят все переменные вместо нужной Часто достаточно посмотреть $_POST['email'], а не весь проект
Не используют <pre> Без <pre> массивы в браузере читаются хуже
Путают print_r и var_dump print_r() удобнее для структуры, var_dump() показывает еще и типы
Что почитать дальше по PHP
Если нужен общий маршрут по теме, откройте рубрику PHP. Для соседних задач пригодятся эти разборы:
- Как подключить PHP к HTML и вывести данные на странице
- Composer в PHP: установка пакетов без ручного копирования
- Joomla: как убрать index.php из адреса сайта
- Laravel: первый route и controller для новичка