Простой учебник
Это краткое и простое руководство показывает только основы PHP.
Текст рассказывает, только как создавать динамические
веб-страницы на PHP, хотя PHP умеет больше.
Раздел «Что умеет
PHP» даёт дополнительную информацию.
Веб-страницы с поддержкой PHP обрабатываются так же, как обычные
HTML-страницы, их создают и редактируют так же,
как обычные страницы на языке HTML-разметки.
Что мне потребуется?
Руководство предполагает, что на сервере уже активировали
поддержку PHP, и что файлы, имена которых заканчиваются на .php,
обрабатывает PHP. На большей части серверов PHP-файлы обрабатывает модуль по умолчанию
для PHP-файлов, но всё равно лучше попросить администратора сервера
проверить это. Итак, если сервер поддерживает PHP, то ничего делать
не нужно. Просто создавайте файлы .php
и размещайте их в каталоге веб-сервера — они будут обрабатываться
автоматически. Не нужно ничего компилировать или устанавливать
дополнительные инструменты. Думайте о PHP-файлах как о простых HTML-файлах
с набором новых «волшебных» тегов, которые умеют делать всё, что требуется.
Например, требуется сэкономить на интернет-канале и вести разработку локально.
Тогда потребуется установить веб-сервер наподобие Apache, и, разумеется, PHP. Скорее всего, потребуется
установить базу данных, например, MySQL.
Всё это можно установить по-отдельности или поступить проще:
руководство приводит инструкции по установке PHP
(предполагается, что веб-сервер уже установили). Если при установке PHP
возникли проблемы, задайте вопросы через
список рассылки по вопросам
установки. Если же выбрали более простой способ,
найдите уже настроенный пакет
для своей операционной системы, который автоматически установит всё
перечисленное за несколько щелчков мыши. Веб-сервер с поддержкой PHP
легко настроить в любой операционной системе, включая Mac OS X, Linux и Windows.
На Linux для поиска RPM-пакетов, возможно, пригодятся страницы
rpmfind и PBone.
Страница apt-get
помогает в поиске пакетов для ОС Debian.
Первая страница на PHP
Создайте файл с именем hello.php в корневом каталоге веб-сервера
(DOCUMENT_ROOT) и запишите в него следующее:
Первый скрипт на PHP: hello.phpТестируем PHP
Привет, мир!'; ?>
]]>
Откройте файл в браузере, для этого наберите имя веб-сервера
и название файла /hello.php. При локальной разработке эта ссылка
может быть чем-то вроде http://localhost/hello.php
или http://127.0.0.1/hello.php, но это зависит
от настроек сервера. Если всё настроили правильно, PHP обработает
этот файл, а браузер выведет следующий текст:
Тестируем PHP
Привет, мир!
]]>
Эта программа чрезвычайно проста, и чтобы создать настолько простую
страницу, даже не обязательно запускать и писать код на PHP. Всё, что делает программа, —
выводит строку Hello World через PHP-инструкцию
echo. Заметьте, что файл не обязан быть
исполняемым или ещё каким-то образом отличаться от других файлов.
Сервер знает, что этот файл требуется интерпретировать средствами PHP, поскольку
расширение файла — «.php», которое сервер настроен передавать PHP.
О PHP-файле думают как об обычном HTML-файле,
который содержит набор тегов, которые умеют делать много интересного.
Если пример ничего не вывел, появилось окно загрузки файла
или код отображается как обычный текст, скорее всего,
на веб-сервере не включили PHP или неправильно сконфигурировали сервер.
Попросите администратора сервера включить такую поддержку.
Предложите администратору инструкцию по установке: раздел «Установка и настройка».
Если разработка ведётся локально,
также прочтите главу об установке, чтобы точно знать, что всё настроили правильно.
Убедитесь также, что файл запрашивается с сервера, который отдаёт данные вывода, через HTTP-протокол.
Если просто обратиться к файлу из файловой системы, PHP не будет его обрабатывать.
Обращайтесь к способам поддержи PHP-программистов,
если ошибки всё равно остаются.
Цель примера — показать формат 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-скрипт успешно создали, самое время создать самый
знаменитый PHP-скрипт! Вызовите функцию phpinfo и увидите
много полезной информации о системе и настройке, например, доступные
предопределённые переменные,
загруженные PHP-модули и параметры настройки.
Уделите некоторое время изучению этой важной информации.
Получение информации о системе из PHP
]]>
Делаем что-нибудь полезное
Давайте сделаем что-нибудь полезное. Например, узнаем, каким браузером пользуется
клиент, который просматривает нашу страницу. Для этого проверим строку пользовательского
агента, которую браузер отправляет как часть HTTP-запроса. Эта информация хранится в переменной. Переменные в PHP
предваряются знаком доллара. Переменная, которая нас интересует,
называется $_SERVER['HTTP_USER_AGENT'].
Переменная $_SERVER — зарезервированная PHP-переменная,
которая содержит информацию, которую 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.
]]>
Вместо вызова PHP-инструкции echo для вывода текста, мы вышли из режима
PHP и просто отправили HTML-код. Важный момент здесь состоит в том, что логическая
структура 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 также умеет работать с входными данными XForms-форм,
хотя вы найдёте работу с обычными HTML-формами комфортной уже через некоторое время.
Хотя работа с формами, которые составили по технологии XForms, — не для новичков,
они могут вас заинтересовать. Раздел о возможностях языка PHP
также содержит короткое введение в обработку данных
форм XForms.
Что дальше?
Новые знания помогут понять бо́льшую часть руководства
и примеры скриптов.
Сайт с материалами PHP-конференций содержит слайд-презентации,
которые подробнее рассказывают о возможностях PHP:
&url.php.talks;