Простой учебник
Это краткое и простое руководство показывает только основы PHP.
Текст рассказывает, только как создавать динамические
веб-страницы на PHP, хотя PHP умеет больше.
Раздел «Что умеет PHP»
даёт дополнительную информацию.
Веб-страницы с поддержкой PHP обрабатываются аналогично
HTML-страницам: PHP-страницы создают и редактируют аналогично
страницам на языке HTML-разметки.
Первая страница на PHP
Вначале потребуется установить PHP.
Инструкция по установке доступна
на странице загрузки.
Теперь создадим файл с названием hello.php
и напишем внутри следующий код:
Первый скрипт на PHP: hello.php
В терминале перейдём в каталог, в котором содержится файл,
и запустим сервер разработки следующей командой:
Для доступа к файлу в браузере указывают URL-адрес,
который состоит из адреса веб-сервера и ссылки на файл: /hello.php.
Из команды, которую выполнили на предыдущем шаге, возьмём адрес веб-сервера и построим полный URL-адрес:
http://localhost:8000/hello.php.
При правильной конфигурации PHP обработает файл,
а браузер покажет вывод: "Привет, мир!".
PHP-интерпретатор умеет генерировать веб-страницы из исходного кода, в котором PHP-код встроили в HTML-разметку.
Поэтому PHP-инструкции записывают непосредственно внутри разметки будущего HTML-документа, как показывает следующий пример:
Тестируем PHP
Привет, мир!'; ?>
]]>
Код сгенерирует следующий HTML-вывод:
Тестируем PHP
Привет, мир!
]]>
Эта программа чрезвычайно проста, и чтобы создать настолько простую
страницу, даже не обязательно запускать и писать код на PHP. Единственное, что делает программа, —
выводит строку Привет, мир! PHP-инструкцией
echo. Заметьте, что файл не требуется делать исполняемым
или ещё каким-то образом отличаться от других файлов.
Сервер знает, что этот файл требуется интерпретировать средствами PHP, поскольку
расширение файла — ".php", которое сервер настроен передавать PHP.
О PHP-файле думают как об обычном HTML-файле,
который содержит набор тегов, которые умеют делать много интересного.
Цель примера — показать формат PHP-тегов. Тег <?php обозначает начало
PHP-кода. Затем идёт PHP-инструкция и тег ?>,
который заставляет парсер выйти из режима интерпретации PHP-кода.
Теги указывают в произвольном месте файла, когда требуется переключить режимы интерпретации PHP-кода и анализа HTML-разметки.
Подробнее о разборе исходного кода рассказывает раздел руководства
«Основы синтаксиса».
Замечание о переводах строк
У переводов строк небольшое значение в HTML-разметке, однако, HTML-разметка
с переносами выглядит аккуратной.
PHP автоматически удаляет переводы строки, которые идут сразу после закрывающего
тега ?>. Это может быть чрезвычайно полезно
при добавлении ряда блоков PHP-кода или при подключении PHP-файлов с PHP-кодом,
который ничего не выводит. Но иногда это сбивает
с толку. Можно поставить пробел после закрывающего тега
?>, чтобы принудительно вывести пробел и перевод строки,
или можно явно добавить перевод строки в последний вызов
языковых конструкций echo или print из блока PHP-кода.
Кратко о текстовых редакторах
PHP-файлы создают и редактируют в текстовых редакторах и интегрированных средах
разработки (IDE). Список отдельных редакторов содержит статья
Список PHP-редакторов.
Попросите администратора страницы добавить редактор, который рекомендуете, в список.
Окажется полезным редактор с подсветкой синтаксиса.
Кратко о текстовых процессорах
В текстовых процессорах наподобие StarOffice Writer, Microsoft Word и Abiword
неудобно редактировать PHP-файлы. Убедитесь, что сохраняете файл
в формате plain text, если изменяете тестовый скрипт
в таком редакторе, иначе не получится прочитать и выполнить PHP-скрипт.
Теперь, когда узнали основы языка, пора создать самый
знаменитый PHP-скрипт! Вызовите функцию phpinfo и увидите
много полезной информации о системе и настройке, например, доступные
предопределённые переменные,
загруженные PHP-модули и параметры настройки.
Уделите время изучению этой важной информации.
Получение информации о системе средствами PHPПримеры кода
Теперь напишем полезный код и узнаем, в каком браузере
посетитель просматривает страницу. Для этого проверим строку пользовательского
агента, которую браузер отправляет как часть HTTP-запроса. Информация об агенте содержится
в массиве, который хранится в переменной.
В PHP каждая переменная начинается со знака доллара, а значение отдельного элемента массива
в переменной получают по ключу. Извлечём строку пользовательского агента из элемента
$_SERVER['HTTP_USER_AGENT'].
$_SERVER — суперглобальная зарезервированная переменная,
которую PHP заполняет информацией о запросе, среде выполнения и серверном окружении.
Дополнительную информацию о таких переменных содержит раздел
«Суперглобальные переменные».
Для вывода значения элемента массива, который хранится в переменной, напишем следующий код:
Вывод значения элемента массива
Пример вывода программы:
В PHP-переменных хранят числа, строки, массивы и значения других типов.
Тип значения, элемент которого выводил код предыдущего примера, называется массивом.
Массивы полезны для хранения значений произвольных типов.
Переменная $_SERVER — только один пример переменной,
к которой PHP автоматически открывает доступ. Список таких переменных приводит раздел
«Зарезервированные переменные»
или вывод функции phpinfo, которую приводил
как пример предыдущий раздел.
В PHP-тег разрешается помещать больше одной инструкции и создавать
небольшие блоки кода, которые делают больше, чем простой вызов инструкции echo.
Например, если требуется проверить, что используется браузер Firefox,
делают так:
Пример использования управляющих
структур и функций
Пример вывода программы:
Здесь вводится ряд новых понятий. Во-первых, в коде появилась инструкция
if. Если вы знакомы с основами синтаксиса
языка C, код выглядит для вас логичным. Иначе, вероятно, лучше взять книгу об основах языка PHP
и прочитать одну-две начальных главы или почитать раздел «Справочник языка» этого руководства.
Во-вторых, в коде появился вызов функции str_contains.
Функция str_contains — встроенная в PHP функция, которая определяет,
содержит ли строка другую строку. В примере функция ищет строку
«Firefox» (т. н. «иголку», или needle)
в элементе $_SERVER['HTTP_USER_AGENT'] (в т. н. «стоге сена»,
или haystack). Если функция нашла «иголку» в «стоге сена», она возвращает логическое значение
&true;. Иначе функция возвращает логическое значение &false;.
Если функция вернёт &true;, то условие в
выражении конструкции if окажется истинным (&true;),
а PHP выполнит код в фигурных скобках {}. Иначе код
не выполняется. Попробуйте создать аналогичные примеры с использованием
инструкций if и
else, а также других функций
наподобие strtoupper и strlen.
Каждая страница руководства также содержит примеры.
Почитайте страницу руководства о том,
как читать определения функций, и раздел
о PHP-функциях,
если не знаете, как использовать функции.
Пойдем дальше и покажем, как переходить в режим PHP и выходить
из режима интерпретации даже в середине блока PHP-кода:
Смешение режимов HTML и PHP
Функция str_contains() вернула значение true
Вы просматриваете страницу в браузере Firefox.
Функция str_contains() вернула значение false
Ваш браузер не похож на Firefox.
Пример вывода данной программы:
Функция str_contains() вернула значение true
Вы просматриваете страницу в браузере Firefox.
]]>
Вместо вывода текста инструкцией echo, мы вышли из режима
интерпретации PHP-кода и написали HTML-разметку.
Логическая последовательность выполнения PHP-кода при этом сохраняется:
PHP отправит пользователю только один блок HTML-разметки
на основе значения, которое вернёт функция str_contains
по результатам поиска подстроки Firefox.
Работа с формами
Список преимуществ PHP дополняет способ обработки HTML-форм.
Основа заключается в том, что PHP-скрипт автоматически получает доступ к каждому элементу формы.
Подробнее о работе с формами в PHP рассказывает раздел
«Переменные из внешних источников». Вот пример HTML-формы:
Простейшая HTML-форма
]]>
В этой форме нет ничего особенного. Это обычная HTML-форма без каких-либо
специальных тегов. Когда пользователь заполнит форму и нажмёт кнопку
отправки, PHP вызовет страницу action.php.
В файле пишут что-то вроде этого:
Выводим данные формы
.
Тебе лет.
]]>
Пример вывода программы:
Кроме частей, в которых вызывается функция htmlspecialchars
и приводится тип (int), понятно, что делает код.
Функция htmlspecialchars гарантирует, что специальные HTML-символы
правильно закодировались, поэтому люди не смогут внедрить HTML-теги или Javascript-код
на страницу. Поскольку известно, что поле age — число, можно просто
преобразовать значение в целое число (int),
что автоматически избавит нас от случайных символов. PHP также может сделать это
автоматически через модуль filter. PHP автоматически
устанавливает переменные в элементах $_POST['name'] и $_POST['age'].
Раньше мы использовали суперглобальную переменную $_SERVER, а здесь мы точно так же
используем суперглобальную переменную $_POST, которая содержит
POST-данные. Обратите внимание, что для атрибута method
в форме установили значение POST. Если бы указали метод GET,
информацию формы содержала бы суперглобальная переменная $_GET.
В коде также обращаются к суперглобальной переменной $_REQUEST,
если источник данных запроса не имеет значения. Эта переменная содержит объединенную информацию
о GET-, POST- и COOKIE-данных.
Что дальше?
Новые знания помогут понять бо́льшую часть руководства
и примеры скриптов.
Сайт с материалами PHP-конференций содержит слайд-презентации,
которые подробнее рассказывают о возможностях PHP:
&url.php.talks;