PHP — один из самых доступных языков для веб-разработки. На нём работает огромное количество сайтов, движков и интернет-магазинов, а хостинг с его поддержкой есть буквально у каждого провайдера. Если вы вебмастер и хотите самостоятельно править шаблоны, писать небольшие скрипты или хотя бы понимать, что происходит в коде вашего сайта, PHP стоит изучить. Начать можно за один вечер, а первые полезные результаты получить в тот же день.
В этой статье пройдём путь от установки окружения до простой работы с формой и базой данных. Примеры короткие, их удобно набирать руками.
Как работает PHP
PHP — серверный язык. Это значит, что код выполняется не в браузере, а на сервере. Браузер запрашивает страницу, сервер запускает скрипт, тот формирует HTML и отдаёт его клиенту. Пользователь видит только готовую разметку, исходный код PHP ему недоступен.
Отсюда важное следствие: чтобы запустить скрипт, нужен веб-сервер с поддержкой PHP. Просто открыть файл двойным щелчком не получится, браузер покажет текст кода.
Настройка окружения
Для обучения проще всего поставить локальный сервер. Есть готовые сборки, которые включают веб-сервер, интерпретатор PHP и базу данных одним установщиком. Порядок действий:
- Установите готовую сборку локального сервера.
- Найдите папку, из которой сервер отдаёт файлы, обычно она называется htdocs или www.
- Создайте в ней папку для учебного проекта, например test.
- Создайте файл index.php и откройте его в браузере по адресу локального сервера.
Редактор выберите любой удобный: подойдёт и простой, и среда с подсветкой синтаксиса. Главное, чтобы файлы сохранялись в кодировке UTF-8 без лишних символов в начале, иначе русский текст превратится в кракозябры.
Первый скрипт
Код PHP помещается между специальными тегами внутри обычного HTML-файла.
<?php
echo "Привет, мир!";
?>
Оператор echo выводит текст. Каждая инструкция заканчивается точкой с запятой. Это правило нужно запомнить сразу: забытая точка с запятой — самая частая ошибка новичков.
Можно смешивать PHP и HTML:
<h1>Сегодня <?php echo date("d.m.Y"); ?></h1>
Функция date возвращает текущую дату в заданном формате. Так страница получает динамические данные.
Переменные и типы данных
Имя переменной в PHP начинается со знака доллара. Тип указывать не нужно: он определяется по значению.
<?php
$name = "Анна";
$age = 28;
$price = 99.90;
$isActive = true;
echo "Меня зовут $name, мне $age лет.";
?>
Основные типы: строка, целое число, число с плавающей точкой, логическое значение, массив и null. Строки в двойных кавычках подставляют значения переменных, а в одинарных выводятся как есть. Для склейки строк используется точка:
$full = "Привет, " . $name . "!";
Условия
Ветвление работает привычным образом.
if ($age >= 18) {
echo "Доступ разрешён";
} elseif ($age >= 14) {
echo "Нужно согласие родителей";
} else {
echo "Доступ закрыт";
}
Операторы сравнения: двойное равно сравнивает значения с приведением типов, а тройное — строго, с учётом типа. Старайтесь использовать строгое сравнение, чтобы избежать неожиданных результатов: например, строка «0» и число ноль при мягком сравнении считаются равными.
Массивы и циклы
Массивы бывают простыми, с числовыми индексами, и ассоциативными, где ключами служат строки.
$colors = ["красный", "зелёный", "синий"];
$user = ["name" => "Анна", "city" => "Пермь"];
foreach ($colors as $color) {
echo $color . "<br>";
}
foreach ($user as $key => $value) {
echo "$key: $value<br>";
}
Цикл foreach — основной способ обхода массивов. Есть также for и while для случаев, когда нужен счётчик или условие. Полезные функции для массивов: count возвращает число элементов, in_array проверяет наличие значения, array_merge объединяет массивы, sort упорядочивает.
Функции
Функции позволяют не повторять код.
function discount($price, $percent) {
return $price - $price * $percent / 100;
}
echo discount(500, 15);
Переменные внутри функции локальны и снаружи не видны. Если нужно что-то получить из функции, возвращайте это через return. Избегайте глобальных переменных: они делают код запутанным.
Работа с формой
Самая типичная задача веб-скриптов — принять данные от пользователя. Форма отправляет их методом GET или POST, а PHP кладёт в специальные массивы.
<form method="post">
<input type="text" name="username">
<button type="submit">Отправить</button>
</form>
<?php
if ($_SERVER["REQUEST_METHOD"] === "POST") {
$username = trim($_POST["username"] ?? "");
echo "Здравствуйте, " . htmlspecialchars($username);
}
?>
Здесь есть два важных момента. Оператор ?? подставляет значение по умолчанию, если ключа нет. А функция htmlspecialchars экранирует специальные символы перед выводом. Без неё пользователь сможет внедрить в вашу страницу чужой скрипт. Правило без исключений: всё, что пришло от пользователя, считается недоверенным и перед выводом экранируется.
Подключение файлов
Чтобы не копировать шапку и подвал на каждую страницу, выносите их в отдельные файлы и подключайте.
<?php include "header.php"; ?>
<p>Содержимое страницы</p>
<?php include "footer.php"; ?>
Инструкция require ведёт себя строже: если файл не найден, выполнение останавливается. Для критически важных файлов используйте именно её.
База данных
Для хранения информации применяют базу данных. Современный и безопасный способ работы с ней — расширение PDO.
$pdo = new PDO("mysql:host=localhost;dbname=test;charset=utf8mb4", "user", "pass");
$stmt = $pdo->prepare("SELECT * FROM articles WHERE id = :id");
$stmt->execute(["id" => $_GET["id"] ?? 0]);
$article = $stmt->fetch(PDO::FETCH_ASSOC);
Обратите внимание на подготовленный запрос с параметром. Никогда не вставляйте данные пользователя прямо в текст запроса через склейку строк: это прямой путь к SQL-инъекциям, когда злоумышленник получает контроль над базой. Параметры передаются отдельно, и драйвер сам обеспечивает безопасность.
Типичные ошибки новичков
- Забытая точка с запятой или незакрытая скобка. Читайте сообщение об ошибке: оно указывает строку.
- Белый экран. Включите показ ошибок на учебном сервере, чтобы видеть причину.
- Вывод данных пользователя без экранирования.
- Склейка SQL-запросов вместо подготовленных параметров.
- Попытка писать всё в одном огромном файле. Дробите код на функции и подключаемые части.
- Хранение паролей открытым текстом. Используйте специальные функции хеширования паролей.
Куда двигаться дальше
Когда базовые вещи освоены, имеет смысл сделать небольшой проект: гостевую книгу, список задач, простой каталог статей. Это закрепит работу с формами и базой. Затем изучите объектно-ориентированный подход, пространства имён, менеджер зависимостей и один из популярных фреймворков. Читайте чужой код: открытые проекты — лучший учебник.
Заключение
PHP прощает многое новичкам, и это его сила и слабость одновременно. Он позволяет быстро получить результат, но не заставляет писать аккуратно. Приучайте себя с первых шагов к хорошим привычкам: строгое сравнение, экранирование вывода, подготовленные запросы, разбивка на функции. Установите локальный сервер, напишите первый скрипт и усложняйте его постепенно. Через несколько вечеров практики вы уже сможете читать код своего движка и вносить в него осмысленные правки.