Цель работы: закрепить теоретические знания и получить практический навык работы с PHP - языком написания сценариев, внедренных в HTML.
Методические указания:
PHP (официальное название "PHP: Hypertext Preprocessor") — язык скриптования на стороне сервера, встраиваемый в HTML-документ.
Для того, чтобы понять, что это означает, разберем пример простого скрипта:
<html> <head> <title>Пример</title> </head> <body> <?php echo "Привет, это PHP-скрипт!";?> </body></html>Создайте данную HTML-страницу и посмотрите как она работает.
Обратите внимание, не программный код выводит на экран теги html-документа, сам гипертекстовый документ содержит небольшой встроенный программный код. Иными словами, вебмастер по-прежнему может создавать гипертекстовые страницы с помошью привычного ему редактора, а затем, при необходимости, встраивать элементы динамической обработки — небольшие скрипты. В рассмотренном примере вся программа состоит из одной строки:
echo "Привет, это PHP-скрипт!";
Сервер "узнает" о том, что это исполняемая программа по специальным тегам:
<?...?>
Отличие языка PHP от языков клиентского программирования (таких, как JavaScript), состоит в том, что программный код исполняется на стороне сервера, т.е. еще до того, как страницу получит браузер пользователя.
Все страницы, содержащие программный код, должны иметь расширение.phtml или.php, однако, если вы имеете доступ к админимстрированию сервера, вы можете настроить препроцессор PHP таким образом, чтобы на содержание скрипта проверялись все страницы, включая.html.
Ход работы:
Вывод на экран и переменные в РНР.
1. С помощью текстового редактора "Блокнот" (Notepad) создайте файл testphp1.phtml и поместите в начало страницы следующий код:
2. Попробуем ввести в скрипт переменные каждого из перечисленных типов:
<html><head><title>Вывод на экран и переменные в PHP</title></head><body><?php$i = 6; // целое$d = 4.89; // дробное$str = "PHP для всех!"; // строкаecho ($i + $d);echo "<br>Привет, мир! ".$str;?></body></html>3. Обратите внимание, что все переменные в PHP должны начинаться с символа dollar ($), тип переменной не задается в явном виде, он вычисляется препроцессором PHP в зависимости от контекста. В результате работы скрипта на экран первой строкой будет выведена сумма значений двух переменных $i и $d и результат конкатенации двух строк "<br>Привет, мир!" и значения переменной $str.
4. Поддерживаются все арифметические операции и функции, многоуровневые скобки, логические операции, операции увеличения или уменьшения на единицу и многое другое. Кроме того, очень просто и естественно организуется сравнение если — то — иначе. Для этого в РНР применяется конструкция:
if (условие) { код для выполнения N1; } else { код для выполнения N2; }Рассмотрим несложный пример:
<html><head><title>Вывод на экран и переменные в РНР</title></head><body><?php$i = 6; // целое$v = 7;$d = 4.89; // дробное$str = "РНР для всех!"; // строкаecho ($i + $d);echo "<br>Привет, мир!".$str; if($i == $v){ echo $i + $v;}else{ echo $i.$v;}?></body></html>5. При сравнении на истину применяется два знака равенства для того, чтобы интерпретатор мог без труда отличить сравнение от присваивания. Результат работы скрипта — 67, т.к $i не равно $v, а команда echo $i.$v; объединяет две строки: "6" и "7". Неравенство (ложь) обозначается символами!=, допустимы все остальные арифметические и логические символы и операторы (например, or, and, >, <= и т.д.).
6. В РНР есть средства быстрого изменения переменной на единицу в сторону увеличения или уменьшения. Для этого нужно указать имя переменной и за ней, без знака равенства, — подряд два плюса или минуса соответственно. Например, $a++; — переменная $a будет увеличена на единицу.
Поддерживается одновременное присваивание одного значения нескольким переменным — $a = $b = 4;. Введите на странице testphp1.phtml следующий код:
7. Обратите внимание, что операция присваивания тоже дает свой результат, так операция $a = 5 дала результат 5, именно поэтому переменная b была проинициализирована в 5. В операции $c = $a++; сначала было произведено присваивание, а затем переменная $a была увеличена на 1. В операции $d = ++$b; сначала была увеличена на 1 переменная $b, а уже затем присвоено получившееся значение.
Передача параметров по ссылке, передача параметров из формы (GET и POST -- запросы).
1. С помощью текстового редактора "Блокнот" (Notepad) создайте файл testphp2.phtml и поместите в начало страницы следующий код:
<html><head><title>Вывод на экран входящих параметров</title></head><body><?phpecho $message.", ".$name;?></body></html>2. Обратите внимание, что переменные message и name передаются в адресной строке, отделяются от адреса страницы знаком?, между собой разделены амперсантом (&). Вы можете изменить значения переменных прямо в адресной строке, нажать Enter и получить другой результат работы скрипта.
3. Создайте страницу testphp2_form.html. Задайте на ней форму:
<form name="myform" method="get" action="testphp2.phtml"><br>Сообщение:<br><input type="text" name="message"><br>Имя:<br><input type="text" name="name"><br><input type="submit" value="Обработать данные"></form>4. Проверьте работоспособность скрипта.
5. Обратите внимание, что на странице с формой элементам назначены имена, соответствующие именам переменных в принимающем скрипте.
6. Попробуйте изменить метод GET на метод POST, теперь значения переменных не должны передаваться в открытом виде.
7. Вместо элемента <input type="text" name="name"> определите на странице выпадающее меню, такое, как приведено ниже:
8. Измените работу скрипта таким образом, чтобы пользователь мог выбрать имя из списка, ввести приветствие, нажать кнопку "Обработать данные" и получить приветствие для выбранного имени.
9. Измените страницу с формой так, чтобы пользователь мог выбрать приветствие, нажав кнопку зависимой фиксации (radiobutton):
Привет
Здравствуйте
Рад Вас снова видеть
Добрый день
10. Измените страницу с формой так, чтобы пользователь мог выбрать фон страницы (средство выбора — на Ваше усмотрение).
Динамическое формирование страницы.
1. Создайте 3 файла с именами: testphp3_inc1.html, testphp3_inc2.html и testphp3_inc3.html. Поместите небольшой текст в каждый.
2. Создайте файл testphp3.phtml, поместите в него следующий код:
<html><head><title>Динамическое формирование страниц</title></head><body bgcolor=silver><?php$file = "";if ($link == 1) { $file = "testphp3_inc1.html"; }if ($link == 2) { $file = "testphp3_inc2.html"; }if ($link == 3) { $file = "testphp3_inc3.html"; }if ($file == "") {?><h3>Пожалуйста, выберите cтихотворение:</h3><a href="testphp3.phtml?link=1"> текст N1</a><br><a href="testphp3.phtml?link=2"> текст N2</a><br><a href="testphp3.phtml?link=3"> текст N3</a> <? } else { include($file);}?></body></html>3. Сохраните созданные файлы, затем запустите файл testphp3.phtml.
4. При выборе ссылки скрипту передается в качестве параметра идентификатор страницы, содержание которой должно быть включено в результирующий файл.
5. Измените скрипт таким образом, чтобы тексты включались в таблицу с желтым фоном; ссылка на страницу, которая импортирована в файл в настоящий момент, была неактивна.
6. Создайте массив $titles, который будет содержать названия текстов. Из этого массива должно формироваться содержимое тега <title>...</title> в зависимости от импортируемой страницы.
7. Внизу страницы поместите ссылки Предыдущее, К оглавлению и Следующее. Ссылка Предыдущее должна вести к предыдущему (по порядковому номеру) стихотворению, ссылка Следующее должна вести к следующему (по порядковому номеру) стихотворению. Ссылки должны исчезать со страницы, если предыдущие/следующие стихотворения исчерпаны. Ссылка К оглавлению должна приводить страницу в первоначальный вид и исчезать на странице оглавления.
8. Перенесите файлы testphp3_inc1.html, testphp3_inc2.html и testphp3_inc3.html в папку includes и внесите соответствующие изменения в скрипт.
Работа с файлами.
1. Создайте файл testphp4_form.html, поместите в него форму, которая будет содержать текстовое поле <textarea name=message cols=10 rows=4></textarea>, поле редактирования <input type=text name=person> и кнопку для отправки данных.
2. Настройте форму таким образом, чтобы данные направлялись скрипту testphp4.phtml.
3. Создайте файл testphp4.phtml, поместите в него следующий код:
<html><head><title>Гостевая книга</title></head><body bgcolor=silver><?php$filename = "messages.txt"; $fp = fopen($filename,"a"); if($fp){ fputs($fp, $message." ".$person); fclose($fp); } include($filename);?></body></html>4. Создайте пустой файл messages.txt — в него будут сохраняться все сообщения пользователей.
5. Запустите файл testphp4_form.html, убедитесь в работоспособности скрипта.
6. Должно происходить следующее: переменные $message и $person принимаются скриптом testphp4.phtml, открывается файл messages.txt (делается это методом fopen, подробнее о нем читайте), помещает в его конец строку, состоящую из значений переданных переменных, разделенных пробелом (делается это методом fputs, подробнее о нем читайте).
7. Измените работу скрипта таким образом, чтобы сообщения и имена пользователей выводились в отформатированном виде, например, поместите их в ячейки таблицы.
8. Измените работу скрипта таким образом, чтобы форма находилась в файле testphp4.phtml, иными словами, удалите файл testphp4_form.html.
9. В начало страницы поместите guestbook.jpg.
Контрольные вопросы:
1. Что представляет из себя скрипт, что он реализует?
2. Что реализуется в динамической странице html?
3. Как проверить работу скрипта.
4. Что такое PHP?
5. Перечислите основные недостатки PHP.
Лабораторная работа №4