2.1. Вставка PHP-кода

Пришло время создать познакомиться с языком PHP. Откройте текстовый редактор (или Dreamweaver) и наберите следующий код:

Листинг №10.

<html>
<head>
<title>Вставка кода PHP</title>
</head> <body> <h1>Пример страницы с PHP кодом</h1> <?php print("<h2>PHP-фрагмент</h2>"); ?> </body> </html>

После этого выполните следующие действия:

  1. Сохраните данный текстовый файл в каталоге C:\WebServers\home\localhost\www\xp под именем php_start1.php (обратите внимание, расширение у файла .php).
  2. Запустите web-сервер Apache и в строке адреса браузера, наберите http://localhost/xp. Вы должны увидеть внутри виртуального каталога xp свой файл php_start.php.
  3. Щелкните на нем и, если вы правильно набрали приведенный код, у вас должна загрузиться страница (рисунок 6).

Скриншот страницы содержащей PHP-код
Рис. 6. Скриншот страницы содержащей PHP-код.

4. Посмотрите html-код данной страницы (меню Вид – Просмотр HTML кода:

<html>
<head>
<title> Вставка кода PHP</title>
</head> <body> <h1>Пример страницы с PHP кодом</h1> <h2>PHP-фрагмент</h2> </body> </html>

И вот здесь начинается самое главное - мы видим только обычный html-код! Дело в том, что страница имеет расширение php, поэтому web-сервер вначале перед отправкой ее клиенту стал просматривать содержимое файла. Найдя фрагмент кода, который помещен между символами <? … ?>, web-сервер отправил его интерпретатору PHP. Команда print(""); выводит на экран то, что находится между символами кавычек. Причем, браузер интерпретирует эту строку как фрагмент html-кода. Именно поэтому срока «PHP-фрагмент» выводится как заголовок второго уровня. И уже такую, полностью сгенерированную html-страницу web-сервер передал клиенту.
Итак, для того, чтобы страница была динамичной, нужно, чтобы выполнились два условия:

  • она должна иметь расширение php
  • внутри нее должен находиться php-код, заключенный между символами <? … ?>, команды должны отделяться символом «точка с запятой».

Мы можем создать файл, который содержит только php-код:

<?php
  print("<html><head><title>Вставка кода PHP</title></head><body>");
  print("<h1>Пример страницы с PHP кодом</h1>");
  print("<h2> PHP-фрагмент </h2>");
  print("</body></html>");
?>

Сохраните файл в каталоге C:\WebServers\home\localhost\www\xp под именем php_start2.php. Запросив этот файл у web-сервера, вы увидите ту же самую страницу, что и на рисунке 67 html-код ее будет аналогичен приведенному выше.

Конечно, большого смысла в такой динамичной странице нет, мы попусту используем ресурсы сервера, чтобы генерировать статичный html-код. Но мы должны понять, все, что делает php-интерпретатор, это выполняет команды, а после создает «налету» html-страницу.

2.2. Переменные, типы переменных

Как и в любом языке программирования PHP умеет обращаться с переменными. Их использовать очень просто, достаточно задать ее имя и сказать, что помещается в данную переменную. Имя переменной обязательно должно начинаться со знака доллара, объявлять тип переменной не нужно. Значение переменной, взятое в кавычки, интерпретируется как текст, числовое значение без кавычек интерпретируется как число:

Листинг №11.

<?php
  $a = "текстовые";
  $b = "переменные";
  $c = $a." ".$b;
  print("<p>$c</p>");
  $d = 3;
  $e = 5;
  $f = $d + $e;
  echo $f;
?>

В данном примере мы создали две текстовые переменные и две числовые. Мы соединили текстовые переменные (выполнили конкатенацию) и выполнили операцию сложения с числовыми переменными. Результаты мы вывели на экран с помощью команды print().

Вставьте данный фрагмент, в html-код, сохраните его в каталоге C:\WebServers\home\localhost\www\xp под именем php_start3.php. Открыв в браузере данный файл, вы увидите две строчки «текстовые переменные» и «8».
Обратите внимание, команда print() вывела не строку $c, а значение переменой с. Именно для легкости обнаружения переменной внутри любой конструкции ее имя должно обязательно начинаться со знака доллара.

Будем честны, PHP поддерживает больше чем два типа переменных, но для наших проектов числовых и строковых будет достаточно.

Внимание! PHP – язык, который различает строчные и прописные буквы, $user_name и $User_name – это разные переменные

2.3. Передача переменных

А как сделать так, чтобы человек самостоятельно вводил значения переменных? Здесь нам на помощь приходят формы, которые мы изучали во второй главе курса.

Давайте вспомним, что каждый объект формы имеет имя (параметр name=""). По сути, когда человек печатает текст в поле ввода или ставит крестик в поле типа checkbox, он задает значение переменной. Осталось лишь научиться их передавать php-коду!

Создайте новый html-файл, содержащий следующий код (листинг 12):

Листинг №12.

<html>
<head>
  <title>ввод значений в форму</title>
</head>
<body>
  <form action="age.php" method="get">
    <p>ваше имя: <input name="user_name" size="20" type="text"></p>
    <p>год рождения: <input name="user_yare" size="20" type="text"></p>
    <input  name="b1" type="submit" value="отправить">
<input name="b2" type="reset" value="очистить"> </form> </body> </html>

Здесь мы создаем форму, включающую четыре объекта: два текстовых поля и две кнопки. Каждый объект имеет свое уникальное имя. Сама форма имеет два параметра. Параметр action, сообщающий, какому файлу будут передаваться данные после нажатия кнопки submit, это - файл age.php. Параметр method имеет значение get, переменные из формы будут передаваться в открытом виде, присоединяясь к адресу. Предположим, мы введем имя пользователя Daniil, а год его рождения 1973, то нажав кнопку «отправить», данные будут переданы файлу age.php, и строка адреса примет вид:

http://localhost/xp/age.php?user_name=Dik&user_yare=1973&b1=%EE%F2%EF%F0%E0%E2%E8%F2%FC

здесь нужны некоторые комментарии:

  • все передаваемые данные располагаются за символом “?”
  • все данные собраны в виде: имя переменной = значение переменной;
  • переменная b1 имеет значение «отправить» текст, содержащий кириллицу. Для таких переменных браузер автоматически выполняет URL-кодирование.

Создайте файл age.php и наберите в нем код, представленный в листинге №13.

Листинг №13.

<html>
<head>
  <title>вычисление возраста</title>
</head>
<body>
  <?php
    $name = $_GET['user_name'];
    $yare = $_GET['user_yare'];
  ?>
  <p>Добро пожаловать <? echo ($name) ?></p>
  <?php
  $y = date("Y");
  $user_age = $y - $yare;
  print ("<p>вам  $user_age лет</p>");
  ?>
</body>
</html>

Файл age.php будет открыт в тот момент, когда человек нажмет на кнопку «отправить». Он получит значение двух переменных user_name и user_yare, которые будет использовать в php-коде.
Так как переменные получены методом get вначале обязательно необходимо извлечь их из полученного массива данных. Именно это делает строка: $user_name = $_GET[‘user_name’];

Если данные передаются методом post, то соответственно нужно извлекать переменные из соответствующего массива.

В приведенном фрагменте используется несколько новых функций:
echo(); - функция, отвечающая за вывод значений переменных, во многом аналогична функции print().
date(); - функция, возвращающая текущую дату в виде строки. Функция имеет большое количество параметров, показывающих, в каком виде должна быть представлена результирующая строка. В нашем листинге функция date() имеет единственный параметр "Y", благодаря нему в переменной $y будет текущий год.

Вот другие параметры функции date():
G - час, 24-часовой формат без ведущих нулей; т.е. от "0" до "23"
i - минуты; т.е. от "00" до "59"
j - день (число) месяца без ведущих нулей; т.е. от "1" до "31"
m - месяц; т.е. от "01" до "12"
H - час, 24-часовой формат; т.е. от "00" до "23"
n - месяц без ведущих нулей; т.е. от "1" до "12"
s - секунды; т.е. от "00" до "59"
Y - год, 4 цифры; например, "1999"
y - год, 2 цифры; например, "99"
z - день года; т.е. от "0" до "365"

пример использования функции: date()
$today = date("j, n, Y"); переменная $today примет значение: 10, 3, 2001 (число, месяц, год)
$today = date("H:i:s"); переменная $today примет значение: 17:16:54 (часы, минуты, секунды)

Не смотря на то, что переменная $yare - строкового типа, мы можем, не преобразовывать строку в число, а сразу, вычесть текущий год от года, рождения, введенного пользователем. PHP - терпимо относится к таким вещам, и где возможно сделает преобразования самостоятельно.

2.4. Добавление комментариев

Хороший стиль программирования требует оставление комментариев к своему коду. Вы можете добавить комментарии в PHP двумя способами:

  • Для комментария одной строки вам нужно в ее начале добавить символы //
  • Для комментирования многострочного блока необходимо заключить блок символами /* ... */.

Остерегайтесь вложенных комментариев. Такие конструкции: /* /* ... */ */ вызовут проблемы.

Практическое задание

1. Создайте два файла (листинги №№ 12-13). Поместите оба файла в каталог xp, запустите сервер и откройте файл forma.htm Введите в поля ваше имя и год вашего рождения, нажмите кнопку отправить, у вас должен открыться файл age.php, который получит данные из первого файла, использует их и выдаст результат:

Добро пожаловать Daniil
вам 33 лет

Конечно, с точки зрения русского языка ответ неграмотный, да и возраст может быть определен неверно, (если у человека в этом году еще не прошел, то ему на один год меньше). Но все это не важно, мы смогли передать данные из одного файла в другой, использовать их в математических операциях и вывести результат на экран.

2. Самостоятельно создайте форму, в которой вводится имя ученика, и его год его рождения. Данные из формы должны передаваться в php-файл, который определяет, в каком классе учится человек (предполагая, что ученик пошел в школу в 7 лет).

Вопросы для самоконтроля

  1. Какие типы переменных поддерживает язык PHP?
  2. В чем отличие php-страницы и html-страницы?
  3. Как передать переменную в php-страницу?
  4. Какие параметры существуют у функции data()?
  5. Что возвращает web-сервер при запросе php-страницы?