Лабораторная работа №9

Тема работы: Изучение языка PHP.

Цель работы: Изучить основы языка серверного скриптования PHP.

Теоретическая часть:

PHP (официальное название "PHP: Hypertext Preprocessor") — язык скриптования на стороне сервера, встраиваемый в HTML-документ.

Для того, чтобы понять, что это означает, разберем пример простого скрипта:

<html> <head> <title>Пример</title> </head> <body> <?php echo "Привет, это PHP-скрипт!";?> </body></html>

На работу этой страницы вы можете взглянуть здесь.

Обратите внимание, не программный код выводит на экран теги html-документа, сам гипертекстовый документ содержит небольшой встроенный программный код. Иными словами, вебмастер по-прежнему может создавать гипертекстовые страницы с помошью привычного ему редактора, а затем, при необходимости, встраивать элементы динамической обработки — небольшие скрипты. В рассмотренном примере вся программа состоит из одной строки:

echo "Привет, это PHP-скрипт!";

Сервер "узнает" о том, что это исполняемая программа по специальным тегам:

<?...?>

Отличие языка PHP от языков клиентского программирования (таких, как JavaScript), состоит в том, что программный код исполняется на стороне сервера, т.е. еще до того, как страницу получит браузер пользователя.

Все страницы, содержащие программный код, должны иметь расширение .phtml или .php, однако, если вы имеете доступ к админимстрированию сервера, вы можете настроить препроцессор PHP таким образом, чтобы на содержание скрипта проверялись все страницы, включая .html.

Ход работы:

Вывод на экран и переменные в РНР.

  1. С помощью текстового редактора "Блокнот" (Notepad) создайте файл testphp1.phtml и поместите в начало страницы следующий код:
2. <html>3. <head>4. <title>Вывод на экран и переменные в РНР</title>5. <?php6. echo "Привет, мир!";7.?>8. </head>9. <body>10. </body>11. </html>
  1. Запустите Far manager, в открывшемся окне нажмите клавиши Alt+F2, в появившемся меню выберите FTP и нажмите Enter.
  2. Создайте учетную запись для подключения к удаленному серверу. Для этого нажмите сочетание клавиш Shift+F4, в появившемся окне в поле адреса введите osu.cctpu.edu.ru, поставьте галочку напротив фразы Ask for password every time и нажмите кнопку сохранить.
  3. Теперь попробуйте перейти на удаленный сервер по протоколу FTP, для этого позиционируйте указатель на вновь созданную учетную запись и нажмите Enter. Появится диалоговое окно, в котором нужно указать имя пользователя и пароль, их вам предоставит преподаватель.
  4. Как только вы получите доступ к серверу OSU по протоколу FTP, создайте на удаленной машине свою папку.
  5. Для этого нажмите клавишу F7 и введите имя папки, в качестве имени папки рекомендую использовать вашу фамилию.
  6. Теперь вы можете скопировать созданный вами файл в свою папку, для этого перейдите клавишей Tab на диск C:, найдите на нем свой файл и скопируйте его, используя клавишу F5.
  7. Теперь вы можете запустить свою страницу, введя в адресную строку браузера адрес: http://osu.cctpu.edu.ru/students/Ваша_Фамилия/testphp1.phtml
  8. Этот скрипт не несет ничего полезного, так как только выводит на экран фразу "Привет, мир!". Для того, чтобы придать скрипту полезные функции, познакомимся с переменными. Переменная характеризуется именем, типом и значением. Имя может быть любым и включать в себя цифры, буквы английского алфавита и разрешенные символы (например, символ подчеркивания или тире). По типу переменные делятся на целые, с плавающей запятой и символьные. Попробуем ввести в скрипт переменные каждого из перечисленных типов:
20. <html>21. <head>22. <title>Вывод на экран и переменные в PHP</title>23. </head>24. <body>25. <?php26. $i = 6; // целое27. $d = 4.89; // дробное28. $str = "PHP для всех!"; // строка29. echo ($i + $d);30. echo "<br>Привет, мир! ".$str;31.?>32. </body>33. </html>
  1. Обратите внимание, что все переменные в PHP должны начинаться с символа dollar ($), тип переменной не задается в явном виде, он вычисляется препроцессором PHP в зависимости от контекста. В результате работы скрипта на экран первой строкой будет выведена сумма значений двух переменных $i и $d и результат конкатенации двух строк "<br>Привет, мир!" и значения переменной $str.
  2. Поддерживаются все арифметические операции и функции, многоуровневые скобки, логические операции, операции увеличения или уменьшения на единицу и многое другое. Кроме того, очень просто и естественно организуется сравнение если — то — иначе. Для этого в РНР применяется конструкция:
36. 37. if (условие) 38. { 39. код для выполнения N1;40. } 41. else 42. { 43. код для выполнения N2;44. } 45.

Рассмотрим несложный пример:

<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>
  1. При сравнении на истину применяется два знака равенства для того, чтобы интерпретатор мог без труда отличить сравнение от присваивания. Результат работы скрипта — 67, т.к $i не равно $v, а команда echo $i.$v; объединяет две строки: "6" и "7". Неравенство (ложь) обозначается символами!=, допустимы все остальные арифметические и логические символы и операторы (например, or, and, >, <= и т.д.).
  2. В РНР есть средства быстрого изменения переменной на единицу в сторону увеличения или уменьшения. Для этого нужно указать имя переменной и за ней, без знака равенства, — подряд два плюса или минуса соответственно. Например, $a++; — переменная $a будет увеличена на единицу.
    Поддерживается одновременное присваивание одного значения нескольким переменным — $a = $b = 4;. Введите на странице testphp1.phtml следующий код:
48. <html>49. <head>50. <title>Вывод на экран и переменные в РНР</title>51. </head>52. <body>53. <?php54. $b = $a = 5;55. echo "<br>переменная a=$a, b=$b";56. $c = $a++;57. echo "<br>переменная a=$a, c=$c";58. $e = $d = ++$b;59. echo "<br>переменная e=$e, d=$d, b=$b";60. $g = 10;61. $h = $g += 10;62. echo "<br>переменная g=$g, h=$h";63.?>64. </body>65. </html>
  1. Обратите внимание, что операция присваивания тоже дает свой результат, так операция $a = 5 дала результат 5, именно поэтому переменная b была проинициализирована в 5.
    В операции $c = $a++; сначала было произведено присваивание, а затем переменная $a была увеличена на 1.
    В операции $d = ++$b; сначала была увеличена на 1 переменная $b, а уже затем присвоено получившееся значение.
  2. Подробнее о выражениях смотрите здесь, о математических функциях смотрите здесь.
  3. Измените страницу таким образом, чтобы на экран выводился результат возведения числа Пи в степень 101,2.

Передача параметров по ссылке, передача параметров из формы (GET и POST -- запросы).

  1. С помощью текстового редактора "Блокнот" (Notepad) создайте файл testphp2.phtml и поместите в начало страницы следующий код:
2. <html>3. <head>4. <title>Вывод на экран входящих параметров</title>5. </head>6. <body>7. <?php8. echo $message.", ".$name;9.?>10. </body>11. </html>
  1. Скопируйте файл на сервер OSU в свою папку, затем запустите его:
    http://osu.cctpu.edu.ru/students/Ваша_Фамилия/testphp2.phtml?message=hello&name=world
  2. Обратите внимание, что переменные message и name передаются в адресной строке, отделяются от адреса страницы знаком?, между собой разделены амперсантом (&). Вы можете изменить значения переменных прямо в адресной строке, нажать Enter и получить другой результат работы скрипта.
  3. Создайте страницу testphp2_form.html. Задайте на ней форму:
15. <form name="myform" method="get" action="testphp2.phtml">16. <br>Сообщение:<br>17. <input type="text" name="message">18. <br>Имя:<br>19. <input type="text" name="name">20. <br><input type="submit" value="Обработать данные">21. </form>
  1. Скопируйте страницу на сервер, затем запустите её и проверьте работоспособность скрипта.
  2. Обратите внимание, что на странице с формой элементам назначены имена, соответствующие именам переменных в принимающем скрипте.
  3. Попробуйте изменить метод GET на метод POST, теперь значения переменных не должны передаваться в открытом виде.
  4. Вместо элемента <input type="text" name="name"> определите на странице выпадающее меню, такое, как приведено ниже:

Василий Петр Ярослав Стас Николай Галина Ольга Елена

  1. Измените работу скрипта таким образом, чтобы пользователь мог выбрать имя из списка, ввести приветствие, нажать кнопку "Обработать данные" и получить приветствие для выбранного имени.
  2. Измените страницу с формой так, чтобы пользователь мог выбрать приветствие, нажав кнопку зависимой фиксации (radiobutton):

Привет
Здравствуйте
Рад Вас снова видеть
Добрый день

  1. Измените страницу с формой так, чтобы пользователь мог выбрать фон страницы (средство выбора — на Ваше усмотрение).

Динамическое формирование страницы.

  1. Создайте 3 файла с именами: testphp3_inc1.html, testphp3_inc2.html и testphp3_inc3.html. Поместите небольшое стихотворение в каждый.
  2. Создайте файл testphp3.phtml, поместите в него следующий код:
3. <html>4. <head>5. <title>Динамическое формирование страниц</title>6. </head>7. <body bgcolor=silver>8. <?php9. $file = "";10. if ($link == 1) { $file = "testphp3_inc1.html"; }11. if ($link == 2) { $file = "testphp3_inc2.html"; }12. if ($link == 3) { $file = "testphp3_inc3.html"; }13. if ($file == "") {?>14. <h3>Пожалуйста, выберите cтихотворение:</h3>15. <a href="testphp3.phtml?link=1">стихотворение N1</a><br>16. <a href="testphp3.phtml?link=2">стихотворение N2</a><br>17. <a href="testphp3.phtml?link=3">стихотворение N3</a> 18. <? } else {19. include($file);20. }21.?>22. </body>23. </html>
  1. Сохраните созданные файлы и скопируйте на сервер, затем запустите файл testphp3.phtml.
  2. При выборе ссылки скрипту передается в качестве параметра идентификатор страницы, содержание которой должно быть включено в результирующий файл.
  3. Измените скрипт таким образом, чтобы стихи включались в таблицу с желтым фоном; ссылка на страницу, которая импортирована в файл в настоящий момент, была неактивна.
  4. Cоздайте массив $titles, который будет содержать названия стихов. Из этого массива должно формироваться содержимое тега <title>...</title> в зависимости от импортируемой страницы.
  5. Внизу страницы поместите ссылки Предыдущее, К оглавлению и Следующее. Ссылка Предыдущее должна вести к предыдущему (по порядковому номеру) стихотворению, ссылка Следующее должна вести к следующему (по порядковому номеру) стихотворению. Ссылки должны исчезать со страницы, если предыдущие/следующие стихотворения исчерпаны. Ссылка К оглавлению должна приводить страницу в первоначальный вид и исчезать на странице оглавления.
  6. Перенесите файлы 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, поместите в него следующий код:
4. <html>5. <head>6. <title>Гостевая книга</title>7. </head>8. <body bgcolor=silver>9. <?php10. $filename = "messages.txt"; 11. $fp = fopen($filename,"a"); 12. if($fp)13. { 14. fputs($fp, $message." ".$person); 15. fclose($fp); 16. } 17. include($filename);18.?>19. </body>20. </html>
  1. Создайте пустой файл messages.txt — в него будут сохраняться все сообщения пользователей.
  2. Скопируйте все полученные файлы на сервер. Для того, чтобы ваш скрипт смог открывать файл messages.txt и сохранять в него текст, необходимо установить соответствующие права для этого файла в файловой системе сервера. Для этого позиционируйтесь на файл messages.txt, нажмите сочетание клавиш Ctrl+A, появится окно настроек Set attributes, поставьте крестики под буквами W (write) и нажмите OK.
  3. Запустите файл testphp4_form.html, убедитесь в работоспособности скрипта.
  4. Должно происходить следующее: переменные $message и $person принимаются скриптом testphp4.phtml, открывается файл messages.txt (делается это методом fopen, подробнее о нем читайте здесь), помещает в его конец строку, состоящую из значений переданных переменных, разделенных пробелом (делается это методом fputs, подробнее о нем читайте здесь).
  5. Измените работу скрипта таким образом, чтобы сообщения и имена пользователей выводились в отформатированном виде, например, поместите их в ячейки таблицы.
  6. Измените работу скрипта таким образом, чтобы форма находилась в файле testphp4.phtml, иными словами, удалите файл testphp4_form.html.
  7. Измените работу скрипта таким образом, чтобы под каждым сообщением пользователя выводилась дата его размещения. Для этого используйте функцию date.
  8. В начало страницы поместите картинку.
  9. Атрибуты тега <img...> width и height задайте автоматически, для этого используйте функцию GetImageSize.

Игра "Угадай число".

  1. Создайте файл testphp5_form.html, поместите в него форму, которая будет содержать поле редактирования и кнопку для отправки данных.
  2. Настройте форму таким образом, чтобы данные направлялись скрипту testphp5.phtml.
  3. Скрипт testphp5.phtml должен работать по следующей схеме: от формы на странице testphp5_form.html принимается целое число, методом rand генерируется случайное целое число, если предположение пользователя и выбор сервера совпадают, должно выводится поздравительное сообщение, иначе должно выводиться сообщение с предложением повторить игру.
  4. Предложите методы проверки входящих параметров — необходимо исключить возможность ввода пользователем текстовых сообщений.

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: