Что мне нужно?
В этом учебнике мы предполагаем, что ваш сервер имеет поддержку PHP и все файлы, оканчивающиеся на .php обрабатываются PHP. На большинстве серверов это расширение назначено для PHP по умолчанию, но, лучше спросите у своего системного администратора, что бы быть уверенным. Если ваш сервер поддерживает PHP, то вам не нужно ничего больше делать. Просто создайте ваши .php файлы и размещайте их в вашей веб-директории и сервер магическим образом интерпретирует их для вас. Нет необходимости ни компилировать что-нибудь, ни устанавливать дополнительные средства. Думайте об этих PHP файлах, как о простых файлах HTML с целым семейством новых тегов, которые позволять вам сделать всё что угодно.
Ваша первая PHP страница
Создайте файл hello.php в корневой веб-директории вашего сервера со следующим содержанием:
Пример 1. Наш первый PHP скрипт: hello.php
<html>
<head>
<title>PHP Test</title>
</head>
<body>
<?php echo "Hello World<p>"; ?>
</body>
</html>
Этот скрипт выведет:
<html>
<head>
<title>PHP Test</title>
</head>
<body>
Hello World<p>
</body>
</html>
Заметьте, это не похоже на CGI скрипт. Файл не должен быть выполнен или обработан особым образом. Думайте о нём, как о нормальном HTML файле, который имеет набор специальных тегов, позволяющих вам делать очень много интересных вещей.
Эта программа необычайно проста и вам, на самом деле, не нужно использовать PHP для создания похожих страниц. Единственное, что он делает, это выводит: Hello World, используя выражение PHP echo().
Если вы пробовали запустить этот пример, и он ничего не выводит, или предлагает скачать файл, или вы видите файл целиком, как обычный текст, возможно, ваш сервер не поддерживает PHP. Попросите вашего системного администратора включить поддержку PHP для вас, используя раздел Установка сайта. Если вы хотите разрабатывать PHP скрипты локально в вашей операционной системе, установите себе подходящий веб-сервер тоже.
Цель этого примера показать специальный формат тега PHP. В этом примере мы использовали <?php для обозначения начала кода PHP. Затем мы разместили PHP выражение и вышли из режима PHP, добавив закрывающий тег ?>. Вы можете переходит в и из PHP режима так же, как мы делали это в примере.
Замечание по поводу текстовых редакторов: существует много текстовых редакторов и Интегрированных Сред Разработки (Integrated Development Environments (IDEs)), которые вы можете использовать для создания, редактирования и управления ваших PHP файлов. Если вы хотите порекомендовать редактор, посетите страницу и попросите её создателя добавить редактор в список.
Замечание по поводу текстовых процессоров: текстовые процессоры, такие, как StarOffice Writer, Microsoft Word и Abiword не лучший выбор для редактирования PHP файлов.
Если вы хотите использовать один из них, вы должны проверить, что вы сохранили файл в режиме plain text(только текст) иначе PHP не сможет прочитать и выполнить этот скрипт.
Замечание по поводу Блокнота Windows: если вы пишите ваши PHP скрипты, вам необходимо проверить, что ваши файлы сохраняются с расширением .php. (Блокнот добавляет расширение .txt к файлам автоматический, не смотря на то, что вы проделали следующие вещи, что бы предотвратить это.)
Когда вы сохраняете файл, и вас спрашивают имя файла, поместите имя файла в кавычки (например "hello.php").
Кроме того, вы можете щёлкнуть на выпадающем меню 'Текстовые Документы' и изменить установку на 'Все Файлы'. Теперь вы можете ввести имя файла уже без кавычек.
Что-нибудь полезное
Давайте сделаем что-нибудь немного более полезное. Мы собираемся проверить, какой тип браузера использует человек, просматривающий страницу. Для того, что бы сделать это, мы проверяем строку User Agent, которую браузер посылает, как часть HTTP запроса. Эта информация храниться в переменной. Переменные в PHP всегда начинаются со знака доллара. Переменная, которая нам нужна, это $_SERVER["HTTP_USER_AGENT"].
Замечание по поводу PHP Autoglobals: $_SERVER это специально-зарезервированная переменная, которая содержит все информацию, полученную от веб-сервера. Это известно как Autoglobal.
Эти специальные переменные были представлены в PHP 4.1.0. До этого мы использовали старые массивы $HTTP_*_VARS вместо этого. Несмотря на возражения, эти старые переменные всё ещё существуют.
Для того, что бы показать эту переменную, мы можем просто сделать следующее:
Пример 2. Вывод переменной (Элемента массива)
<?php echo $_SERVER["HTTP_USER_AGENT"]; ?>
Вывод этого примера может быть, например:
Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
Существует много типов переменных, доступных в PHP. В примере выше, мы вывели элемент массива. Массив может быть очень полезен.
$_SERVER всего лишь одна переменная, автоматический доступная для вас из PHP. Вы можете увидеть список в списке Зарезервированных Переменных вашего руководства, или получить из полный список, создав файл, похожий на этот:
Пример 3. Вывести все предопределённые переменные с помощью phpinfo()
<?php phpinfo(); ?>
Если вы загрузите этот файл в ваш браузер, вы увидите страницу, полную информации о PHP наряду со списком всех переменных, доступных для вас.
Вы можете вставлять различные PHP выражения внутри PHP тега и создавать небольшие блоки кода, которые сделают больше, чем только одно echo. Например, если мы хотим проверить, использует ли пользователь Internet Explorer, мы можем создать что-то, похожее на это:
Пример 4. Пример использования управляющих структур и функции
<?php
if (strstr($_SERVER["HTTP_USER_AGENT"], "MSIE")) {
echo "You are using Internet Explorer<br />";
}
?>
A sample output of this script may be:
You are using Internet Explorer<br />
Здесь мы представляем две новые концепции. Мы имеем выражение IF. Если вы хорошо знакомы с базовым синтаксисом, используемым языком C, это всё должно казаться вам совершенно логичным. Если вы недостаточно знаете C или некоторые другие языки со сходным синтаксисом, вам, очевидно, необходимо прочитать первые две главы любой книги по PHP для начинающих, или прочитать Справочник по Синтаксису этого руководства. Вы можете найти список книг о PHP по адресу http://www.php.net/books.php.
Следующая концепция, которую мы представляем, это вызов функции strstr(). strstr() это функция, встроенная в PHP, которая ищет строку в другой строке. В нашем случае мы ищем строку "MSIE" внутри $_SERVER["HTTP_USER_AGENT"]. Если строка найдена, функция возвращает TRUE, и если нет, то FALSE. Когда она возвращает TRUE, выражение IF выполняет определённую часть кода, предназначенную для этого случая. Иначе, этот участок кода не выполняется. Найдите свободное время для того, что бы создать похожие примеры с IF, ELSE, и другими функциями, вроде strtoupper() и strlen(). Каждая страница руководства по этим функциям тоже содержит примеры.
Мы получим это дальше и покажем, как можно переходить и выходить из режима PHP даже в середине блока PHP:
Пример 5. Смешивание режимов PHP и HTML
<?php
if (strstr($_SERVER["HTTP_USER_AGENT"], "MSIE")) {
?>
<h3>strstr must have returned true</h3>
<center><b>You are using Internet Explorer</b></center>
<?php
} else {
?>
<h3>strstr must have returned false</h3>
<center><b>You are not using Internet Explorer</b></center>
<?php
}
?>
A sample output of this script may be:
<h3>strstr must have returned true</h3>
<center><b>You are using Internet Explorer</b></center>
Вместо использования выражения echo для вывода, мы выходим из режима PHP и посылаем только HTML. Очень важно заметить то, что логический поток скрипта целостный. Только один из блоков HTML будет отправлен браузеру, в зависимости от того, возвратит ли strstr() TRUE или FALSE.
Взаимодействие с формами
Одна из сильных возможностей PHP это способ, которым он взаимодействует с HTML формами. Главное, что надо понять, это то, что каждый элемент формы будет автоматический доступен для ваших PHP скриптов. Пожалуйста, прочитайте раздел руководства про переменные со стороны для дополнительной информации и примеров использования форм с PHP. Здесь пример HTML формы:
Пример 6. Пример HTML формы
<form action="action.php" method="POST">
Your name: <input type="text" name="name" />
Your age: <input type="text" name="age" />
<input type="submit">
</form>
В этой форме нет ничего особого. Это обыкновенная HTML форма, без каких-либо специальных тегов. Когда пользователь заполнит эту форму и нажмёт кнопку отправки, вывозится action.php. Это файл может быть похож на что-то такое:
Пример 7. Вывод данных из нашей формы
Hi <?php echo $_POST["name"]; ?>.
You are <?php echo $_POST["age"]; ?> years old.
A sample output of this script may be:
Hi Joe.
You are 22 years old.
Это должно быть вполне очевидно, то, что делает этот скрипт. Больше для этого ничего не нужно. Переменные $_POST["name"] и $_POST["age"] автоматический устанавливаются для вас PHP. раньше мы использовали $_SERVER autoglobal, сейчас мы создали специальную $_POST autoglobal, которая содержит все данные, переданные методом POST. Заметьте, мы использовали метод POST. Если бы мы использовали метод GET, то информация, полученная от формы, будет располагаться уже в $_GET autoglobal. Вы можете так же использовать $_REQUEST autoglobal, если не уверенны в методе, которым будут передаваться данные. $_REQUEST autoglobal содержит смесь из данных, полученных методами GET, POST, COOKIE и FILE. Смотри также функцию import_request_variables().
Использование старого PHP кода с новыми версиями
Сейчас, когда популярность PHP растёт, существует много ресурсов, кроме этого, содержащих листинги кода, которые вы можете использовать в ваших собственных скриптах. Большей частью разработчики PHP старались обеспечить обратную совместимость, т.е. скрипт, написанный для старой версии PHP должен работать (в идеальном случае) без изменений и в новой версии PHP, на практике, некоторые изменения всё же бывают необходимы.
Два из наиболее важных последних изменений, которые могут повлиять на старый код:
Неодобрение старых $HTTP_*_VARS массивов (которые должны быть указаны, как глобальные, при использовании внутри функции или метода). Следующие глобальные массивы были представлены в PHP 4.1.0: $_GET, $_POST, $_COOKIE, $_SERVER, $_ENV, $_REQUEST, and $_SESSION. Старые $HTTP_*_VARS массивы, такие, как $HTTP_POST_VARS всё ещё существуют начиная с PHP 3.
Внешние переменные больше по умолчанию не регистрируются как глобальные. Директива register_globals по умолчанию выключена в php.ini. Предпочитаемый способ для доступа к этим переменным состоит в обращении к ним через автоглобальные массивы, указанные выше. Старые скрипты, книги и учебники могут работать полагаться на то, что эта директива будет включена. Если включена, например, можно использовать переменную $id из URL http://www.example.com/foo.php?id=42. Несмотря на то, включена ли эта директива, или нет, переменная $_GET['id'] будет доступна.