10475

Краткая теория PHP и введение в базы данных на примере Mysql

Конспект

Информатика, кибернетика и программирование

Краткая теория PHP и введение в базы данных на примере Mysql Введение Цель: Сайт с помощью PHP блоков можно собирать как конструктор и за счет блоков можно изменить любую информацию на сайте созданном с помощью PHP сразу на всех его страницах. Вся информация сайта

Русский

2013-03-26

2.93 MB

22 чел.

Краткая теория PHP и введение в базы данных на примере Mysql

Введение

Цель:

Сайт с помощью PHP блоков можно собирать как конструктор, и за счет блоков можно изменить любую информацию на сайте, созданном с помощью PHP сразу на всех его страницах. Вся информация сайта хранится в базе данных MySQL.

В лекции рассматриваются следующие темы.

Тема  1 – Создание тренировочного сайта для работы с PHP.

Тема  2 - Базовые понятия языка PHP.

Тема  3 - Основы конструкции IF-ELSE.

Тема  4 - Цикл WHILE (DO-WHILE). Цикл FOR.

Тема  5 – Вывод текста. Синтаксис HEREDOC.

Тема  6 - Конструкция  SWITCH-CASE.

Тема  7 – Массивы.

Тема  8 - Введение в функции.

Тема  9 - Передача переменных - метод GET.

Тема 10 - Передача переменных - метод POST.

Тема 11 - Суперглобальный массив $_SERVER.

Тема 12 - Инструкция INCLUDE.

Примечание. Если на рисунках используется овал , то на эту информацию следует обратить особое внимание.

У Вас на машине должна быть создана  папка в которой

<папка тестов>:\WebServers\home\localhost\www\php\*.php) представлены исходные коды программ.


Тема 1 – Создание тренировочного сайта для работы с PHP.

Цель.

  •  Как определить специальный тренировочный сайт (полигон) на жестком диске.
  •  Как определить сайт в программе Macromedia Dreamweaver CS3.
  •  Как создать PHP страницу внутри нашего полигона.

Определим тренировочный сайт на локальном сервере (см. лекцию “Создание сервера на собственном компьютере”). Для этого перейдем в папку, в которой был установлен сервер, и создадим в ней папку (с именем PHP) по адресу C:\WebServers\home\localhost\www\*.*.

В нашем случае это будет (рис. 1):

Рис. 1. Создание папки для тренировочного сайта.

Далее необходимо запустить сервер   (признаком, что сервер запущен, является наличие пиктограмм в трее).

Теперь необходимо перейти в программу Adobe DreamWeaver  и создать сайт. Если у Вас подобная программа отсутствует, то скачайте ее из Интернета для ознакомления.

и установите ее на Вашей машине (рис. 2- Setup.exe).

Программа платная, поэтому в целях обучения, выберите версию для ознакомления (30 дней).

Для курса “Базы данных” использование данной программы является не обязательным. Dreamweaver визуальный HTML редактор. Разработан и поддерживался компанией Macromedia.

  •  

Рис. 2. Инсталляция Adobe DreamWeaver.

Заходим в программу (рис. 3).

Рис. 3. Adobe DreamWeaver.

Нажимаем закладки  (рис. 3) или  и (рис. 4) и указываем  на необходимость создания   нового сайта.

Рис. 4. Переход в Adobe DreamWeaver в пункт создания нового сайта.

В результате получим окно (рис. 5). В закладке      указываем имя сайта и переходим на закладку , где указывается информация, показанная на рис. 6.

Рис. 5. Наименование нового сайта.

После перехода по вкладке “Дополнительно”

Рис. 6. Наименование нового сайта и выбор пути для его расположения.

Файлы, относящиеся к тренировочному сайту будут храниться в папке по пути, показанному на рис. 7. Естественно, что подобная папка может быть создана через другую оболочку.

Рис. 7. Наименование нового сайта и выбор пути для его расположения.

В результате проведенных действий получим окно рис. 8, (заполненное поле, показанное на рис. 4). Подтвердив пункт (рис. 8),

Рис. 8. Наименование нового сайта и выбор пути для его расположения.

получим информацию о создании соответствующих папок доступных на прямую через  редактор DreamWeaver.

Рис. 9. Наименование нового сайта и фиксация пути для его расположения.

Далее необходимо создать файл c расширением *.php и поместить его по адресу указанному на рис. 9 ().

Для этого в редакторе выбираем пункт создания нового файла (рис. 10).

Рис. 10. Этап создания файла с расширением *.php.

и cформируем его содержание, используя вкладку PHP окна на рис. 11.

Рис. 11. Выбор типа расширения для создаваемого файла.

Указав в окне (рис. 11), что нам необходим файл с расширением *.php, и использовав кнопку , мы автоматически получим сгенерированный код тестового файла, который показан на рис. 12.

Рис. 12. Программный код сгенерированного файла с именем Безымянный-1.php.

Заметим, что большинство рассмотренных ранее шагов по созданию шаблона файла можно избежать, если заранее подготовить подобный шаблон в любом HTML редакторе.

Посмотреть сгенерированный код можно, если нажать закладку (рис. 12).

Программа, показанная на рис. 12 содержит чистый HTML код, в который по мере необходимости встраивается PHP код.

Не вдаваясь в объяснения, почему надо отредактировать программу, исправьте код, представленный на рис. 12  к виду, показанному на рис. 13 (это курс по базам данных,  а не по веб-технологиям).

В поле укажем и файл (Безымянный-1) сохраним (Ctrl+Shift+S) под именем index.php.

Модифицированный код, показанный на рис. 13, можно сохранить используя клавиши Ctrl+S.

Примечание. Php код вставляется через вкладку

Примечание. Все программы, рассмотренные в лекциях, протестированы и их исходные коды предоставляются Вам вместе с этими лекциями. Исходные тексты хранятся по адресу C:\WebServers\home\localhost\www\php\*.* (рис. 7).

Рис. 13. Программный код файла Index.php после модификации.

Примечание. Описание стандартных функция языка PHP (например, ECHO), использованных в данной лекции приведено в лекции “Основы работы с базой данных”.

Для удобства Вы можете ниже приведенный текст (рис. 13a), скопировать в файл Index.php (он полностью повторяет текст, представленный на рис.13) и не вводить его в ручную.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />

<title>Первая PHP страница</title>

</head>

<body>

<?php //тег открытия PHP блока

$name = "Это Я. Учусь в ' СЗТУ ' ";

// такой способ вывода ковычек допустим

$b    = 25;//переменная числовая всегда указываеися без ковычек

$c=" Мне сейчас $b лет.";

echo "<p align='center' > name=$name.$c <br> </p>  ";

 // <p .../p> - тег абзаца

//echo " Мне сейчас $b лет."; // вывод на экран  

?><-- ! Конец описания PHP блока  -->

</body>

</html>

Рис. 13a. Программный код Index. php после модификации.

Далее в адресной строке браузера укажите (рис. 14)  http://localhost/php.

И Вы должны получить следующий экран браузера (рис. 14).

Рис. 14. Окно браузера после модификации.

Ниже (рис. 14a) приведен состав папки и ее местоположение, в которой содержится набор программ, используемых в данной лекции.

Рис. 14а. Окно Total Comander с набором файлов, использованных в лекции.


Тема 2 - Базовые понятия языка PHP.

Цель усвоить:

Способы вставки блока PHP кода в HTML документ.

Используют два способа вставки PHP кода в HTML документ:

1-й способ:

2-ой способ является рекомендуемым:

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

Как создаются переменные, и какие имена им можно и нельзя давать.

В отличие от обычных языков программирования любая переменная, используемая в языке PHP начинается с символа доллара $, а имя переменной формируется на основании правил принятых в программировании, например, как в языке СИ (русские символы не рекомендуются), но важен регистр.

$name   и   $naMe – это различные переменные.

Как присвоить переменной значение, и что такое оператор присваивания.

Переменной присваивается значение через знак равенства (=).

Какой момент при создании переменной нужно усвоить раз и навсегда, чтобы не наделать грубых ошибок на практике.

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

Что такое оператор вывода в PHP, сколько их и где они используются.

 Для вывода информации на экран используются две функции echo и print - они эквивалентны. Если, например, в теле тега (рис. 13) добавить функцию  print (рис. 15).

Рис. 15. Модифицированное тело блока программы Index.php.

Результатом будет следующий экран (рис. 16), если программа Index.php была сохранена, в адресной строке было указано и нажата  

Рис. 16. Результат вставки функции Print в тело блока PHP программы Index.php.

 Следует помнить, что функция print работает медленнее чем echo.

Как правильно выводить переменную на экран.

Полученный вывод на рисунке 16 не разделил действие двух функций по выводу их в разных строках. Для устранения этого недостатка в аргументе функции print следует установить тег переноса () и результат приобретет вид

,

показанный на рис. 17.

Рис. 17. Результат действия тега переноса

Аналогичный результат был бы получен, если бы строка

   

из рис. 15, была бы приведена к виду:

 .

Какие арифметические действия можно выполнять над и между переменными.

Арифметические действия над переменными одного типа в языке PHP, аналогичны языку СИ. Приоритет операций такой же.

Следующий модифицированный и сохраненный код (рис. 18) должен быть Вам понятен и даст результат, показанный на рис. 19.

Рис. 18. Использование арифметических операций в PHP.

Обратите внимание, если Вы нажмете   рис.19, и укажите (рис. 20), то сможете увидеть код HTML (рис. 21) прямо в браузере.

Рис. 19. Окно браузера после модификации.

Рис. 20. Окно браузера, переход на исходный код.

Рис. 21. Окно браузера - исходный код на HTML.

Дополнения по переменным

Как экранировать двойные кавычки.

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

что позволяет вывести на экран информацию в следующем виде:

Если это правило будет нарушено (рис. 22), то на экран будет выведено  сообщение, показанное на рис. 23.

Рис. 22. Окно редактора кода PHP с неправильным экранированием ковычек.

Рис. 23. Окно браузера с описанием ошибки.

По возможности надо избегать использование ковычек, заменяя их одинарными. Приведем часть рассматриваемой программы к виду (рис. 24).

Рис. 24. Окно редактора с одинарными ковычками.

Следующей распространенной ошибкой является вынос переменной из тела блока PHP.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />

<title>Первая PHP страница</title>

</head>

<body>

$b    = 25;//Так нельзя !!

<?php //тег открытия PHP блока

$name = "Это Я. Учусь в ' СЗТУ ' ";

//$b    = 25;//переменная числовая

$c=" Мне сейчас $b лет.";

 echo "<br> Мне сейчас $b лет."; // вывод на экран значения переменной $b не произойдет

?>

</body>

</html>

Результат работы представленной программы показан на рис. 25.

Рис. 25. Окно браузера с ошибкой выноса переменной из блока PHP 

Примечание. Далее на рисунках строки, относящиеся к HTML коду, для экономии места, приводить не будем.

Чтобы отцентровать информацию на экране, используют теги абзацев (рис. 26) и свойства (атрибуты) абзаца.

Рис. 26. Центровка вывода информации.

Вывод на экран в этом случае будет

Рис. 27. Результат центровки вывода информации.

Если тег абзаца не закрыть (/p>), то центровка распространяется на все операторы блока PHP, как это показано на рис. 28.

Рис. 28. Код без тега разметки  </P>.

На рис. 29 показано, что центровка располагается и на вторую строку выводимую на экран.

Рис. 29. Результат использования HTML тега разметки  align=’center’.

Операция конкатенации ("присоединение" (стыковка)) переменных.

Преобразуем код, представленный на рис. 28, к виду рис. 30 и Вам станет понятно назначение и результат операции конкатенации (рис. 31).

Рис. 30. Точка, поставленная между переменными $name и $c – это и есть символ операции конкатенации.

Рис. 31. Результат операции конкатенации на экране.

Имеются две строковые операции. Первая - операция конкатенации ('.'), которая возвращает объединение из правого и левого аргументов. Вторая - операция присвоения ('.='), которая присоединяет правый аргумент к левому аргументу.

$a = "Hello ";

$b = $a . "World!"; // теперь $b содержит "Hello World!"

$a = "Hello ";

$a .= "World!";     // теперь $a содержит "Hello World!"


Тема 3 - Основы конструкции IF-ELSE.

Цель: Усвоить назначение и применение конструкции

Особенности синтаксиса конструкции в языке PHP

Рис. 32. Схема конструкции IF - ELSE.

Для усвоения материала, создадим новый файл (рис. 33) с названием IF.php по пути: C:\WebServers\home\localhost\www\php\if.php следующего содержания:

Рис. 33. Начальное состояние кода файла If.php.

Еще раз обратим Ваше внимание на первые пять строк в представленном коде на рис. 33. Для правильного отображения в браузерах, в созданном Вами файле If.php они должны быть такими же и файл должен находиться в папке, как это показано на рис. 34.

Рис. 34. Местоположение файла IF.php.

Принимая во внимание, что первые девять строк на рис. 33 при изучении конструкции IF-ELSE изменяться не будут, далее на рисунках показывать не будем.

Для дальнейшей работы проверьте, запущен ли у Вас на машине сервер и если Вы приведете содержимое файла из рис. 33 к виду, показанному на рис. 35, то после запуска браузера с адресом    Вы увидите окно браузера следующего содержания (рис. 36).

Рис. 35. Пример кода IF.php с конструкцией  IF-ELSE.

Рис. 36. Окно результата кода IF.php с конструкцией  IF-ELSE.

В качестве операции определяющей истинность условия оператора IF (Если), разрешено использовать любые операции разрешенные в языке CИ (>, <, >= и т.д.). В качестве логических связок используются and (его эквивалент &&) и операция ИЛИ (or – ее эквивалент || ).

Ниже показан пример использующий логическую операцию .

Оператор и оператор эквивалентен.

Ниже приведена таблица результатов использования логических операций

Пример

Имя

Результат

$a and $b

And

TRUE, если и $a, и $b TRUE.

$a or $b

Or

TRUE, если $a или $b TRUE.

$a xor $b

Xor

TRUE, если $a или $b TRUE, но не оба.

! $a

Not

TRUE, если $a не TRUE.

$a && $b

And

TRUE, если и $a, и $b TRUE.

$a || $b

Or

TRUE, если $a или $b TRUE.

Рис. 37. Результат логических операций.

Разрешена конструкция без ELSE (Если) (рис. 38).

Часто необходимо выполнить по условию не один, а несколько операторов. Разумеется, нет необходимости создавать для каждого оператора конструкцию if. Вместо этого Вы можете сгруппировать несколько операторов в блок.

Например, следующий код выведет на экран (рис. 39), если $a не равно $b значение переменной $a, предварительно присвоив ее значение переменной $b:

Рис. 38. Использование If без Еlse.

Рис. 39. Результат работы кода представленного на рис. 38.

Следующий пример (рис. 40) показывает использование вложения конструкций IF. Результат можно посмотреть на рис. 41. Обратите внимание, зачем потребовался тег переноса  <br> на рис. 40.

Рис. 40. Вложение IF.

Рис. 41. Действие вложенных IF.


Тема 4 - Цикл WHILE (DO-WHILE). Цикл FOR.

Рис. 42. Конструкция оператора While.

Для получения практических навыков создадим новый файл с именем While.php по пути: C:\WebServers\home\localhost\www\php\while.php следующего содержания (рис. 43):

Рис. 43. Новый файл для тестирования конструкции While.

Далее при рассмотрении вопросов связанных с конструкцией While на рисунках, первые девять строк из рис.43 приводится не будут, но помнить о их наличии необходимо.

Создадим следующий код в теле блока Php (рис. 44) и сохраним его.

Рис. 44.  Код PHP с конструкцией While.

Рис. 45. Результат в окне браузера программы представленной на рис. 44.

Если подобного результата (рис. 45) мы не получим, то проверьте запущен ли на машине и нет ли ошибок в набранном коде. Программа должна находится по адресу C:\WebServers\home\localhost\www\php\while.php.

Как сделать логический перенос строки в цикле.

Если возникает необходимость вывести результат в виде столбца, то строка содержащая , преобразуется к виду и на экране будет результат (рис. 46).

Рис. 46. Результат в окне браузера.

При этом, исходный код, показываемый браузером по вкладкам - будет иметь вид (рис. 47).

Рис. 47. Текст HTML кода в окне браузера без тега /n.

 

Если возникает необходимость показывать исходный текст HTML кода в виде, показанном на рис. 48, то в теле блока Php кода следует указать тег (рис. 49).

Рис. 48. Текст HTML кода в окне браузера, при использовании тега /n.

Рис. 49. Часть текста HTML кода While.php в окне редактора.

Заметим, что использование тега ‘\n’ ни как не влияет на изображение, показываемого в окне браузера (рис. 46).

Следующий пример показывает, как оператор While используется для подсчета суммы (рис. 50). Результат работы программы показан на рис. 51.

Рис. 50. Подсчет суммы.

Обратите внимание на расположение точек с запятой на рис. 50.

Рис. 51. Результат вывода на экран программы, представленной на рис. 50.

В качестве тренировки модифицируйте оператор на   и предскажите результат, до запуска программы на исполнение.

Чем отличается цикл while от цикла do – while.

Другой вариант цикла имеет вид, показанный на рис. 52. Результат работы этой программы - аналогичен результату, показанному на рис. 51.

Типовая ошибка программиста при работе с циклами – не забывайте в внутри тела цикла менять значение переменной  цикла.

Рис. 52. Конструкция DO-WHILE.


Цикл FOR

Как устроен цикл for и для чего он нужен.

Рис. 53. Конструкция  FOR.

Для получения практических навыков создадим новый файл с именем For.php по пути: C:\WebServers\home\localhost\www\php\for.php следующего содержания (рис. 54), которое, как не трудно заметить, ни чем не отличается  от содержания показанного на рис. 52.

Рис. 54. Код WHILE, который мы приведем к конструкции  FOR.

По своей роли конструкция For не отличается  от конструкции While. Поэтому приведем программу, показанную на рис. 54 к виду представленному на рис. 55.

Рис. 55. Код, который мы привели к конструкции  FOR.

Однако результат работы программы на рис. 55 дает результат (показанный на рис. 56), отличный от результата показанного на рис. 51.

Рис. 56. Результат работы программы, показанной на рис. 55.

Нетрудно заметить, что разница в результате возникает из-за того, что в теле цикла While значение I=0  в работе не участвует. Поэтому, если значение условия окончания цикла (на рис. 55) привести к виду , то результат совпадет (рис. 57).

Рис. 57. Результат работы программы c $I <= 5.


Тема 5 – Вывод текста. Синтаксис HEREDOC.

Если возникает необходимость вывода большого куска текста на экран подготовленного в HTML формате (рис. 58). Например:

<table width="300" align="center"  

 cellpadding="10"  bgcolor="#f6f6f6"  

 style="border:1px solid gray;">

 <tr>

<td > Текст в таблице </td>

</tr>

</table>

Рис. 58. Текст в таблице в формате HTML.

Тогда команда Echo, в теле PHP кода, получает вид (рис. 59).

Рис. 59. Текст в формате HTML.

Если модифицированную программу (рис. 59) запустить на исполнение, то получим отображение, показанное на рис. 60.

Рис. 60. Результат работы .

Такой прием (использование echo <<< TEXTTEXT;) позволяет избежать проблем с экранированием двойных ковычек.

В данном операторе возможен и вывод переменных.

Если текст программы (рис. 59) привести к виду (рис. 61), то результат можно увидеть на рис. 62.

Рис. 61. Текст в формате HTML.

Рис. 62. Результат работы на экране.

Примечание. Перед закрывающим маркером HEAR; пробел должен отсутствовать. Лексема HEAR выбирается произвольно. При ее выборе должно лишь гарантироваться, что она нигде не встретиться в тексте.

Теги, используемые для представления таблиц

Для представления таблиц используются нескольких видов тегов HTML:

теги TABLE, которые обрамляют всю табличную спецификацию

необязательный элемент CAPTION, специфицирующий заголовок (имя) таблицы

теги TR, специфицирующие строки таблицы

теги TH, специфицирующие заголовки строк и столбцов

теги TD, специфицирующие данные в таблице, т.е. содержимое табличных ячеек

Основные табличные структуры

Давайте начнем с очень простого примера. Он связан с представлением таблицы чисел 2 на 2 (единичная матрицa) без каких либо заголовков. Код HTML выглядит следующим образом:

Пример table1.html:

<TABLE>

<TR> <TD> 1 </TD> <TD> 0 </TD> </TR>

<TR> <TD> 0 </TD> <TD> 1 </TD> </TR>

</TABLE>

и обычно представляется браузером следующим образом: 1  0

0  1

Таким образом, теги TABLE заключают в себе табличные строки, каждая из которых обрамляется тегами TR, и табличные ячейки, обрамляемые тегами TD. Это согласуется с логической структурой таблицы, как множеством строк, состоящих из ячеек. Вы можете сократить табличную структуру, опустив конечные теги TD и TR, однако утратите до некоторой степени ясность представления:

<TABLE>

<TR> <TD> 1 <TD> 0

<TR> <TD> 0 <TD> 1

</TABLE>

Использование пробелов и переводов строк в коде HTML для таблицы не всегда хорошо, однако это иногда необходимо для позиционирования элементов таблицы в коде HTML так, чтобы образы в одних и тех же столбцах располагались бы понятно для Вас (или для кого-то, работающего с документом HTML).

Дополнительные свойства; типичная таблица с текстовыми ячейками

Есть несколько элементов, которые Вы можете добавить к вышерассмотренной простой табличной модели:

Заголовок (caption) для таблицы, связанный с самой таблицей (в дополнение к строкам текста о таблице в документе).

Подзаголовки (headers) (объяснения) как для табличных строк, так и для колонок.

Рамки (borders) вокруг таблицы и каждой табличной ячейки.

Следующий, довольно типичный пример показывает все вышеупомянутые особенности:

Пример table2.html:

<P>An illustration of the use of the TABLE element in HTML.</P>

<TABLE BORDER=1>

<CAPTION>Finnish, English, and scientific names for some animals</CAPTION>

<TR><TH>Finnish name</TH><TH>English name</TH><TH>Scientific name</TH></TR>

<TR><TD>hirvi</TD><TD>elk</TD><TD><I>Alces alces</I></TD></TR>

<TR><TD>orava</TD><TD>squirrel</TD><TD><I>Sciurus vulgaris</I></TD></TR>

<TR><TD>susi</TD><TD>wolf</TD><TD><I>Canis lupus</I></TD></TR>

</TABLE>


Тема 6 - Конструкция  SWITCH-CASE.

Рис. 63. Синтаксис оператора.

Данная конструкция является более наглядным способом (по сравнению с оператором IF) представления алгоритмов, требующих принимать какое-то одно решение при переданном ей значения переменной.

Для теста создадим новый файл с именем Case.php по пути: C:\WebServers\home\localhost\www\php\Case.php следующего содержания (рис. 64).

Рис. 64. Заготовка  файла CASE.php.

Далее в примерах приводить будем только изменения в блоке кода .

В блоке кода PHP внесем следующую информацию (рис. 65).

Рис. 65. Состав блока кода .

Результатом исполнения кода показанного на рис. 65, будет окно браузера показанное на рис. 66.

Рис. 66. Результат выполнения Swich-Case.

Способы означивания переменной $sposob рассмотрены далее.


Тема 7 – Массивы.

Массив это переменная, которая может хранить в себе несколько значений и доступ к этим значениям осуществляется через индекс массива.

Ниже приведен пример массива с именем элементы которого представлены символьными  значениями (рис. 66).

Рис. 66. Массив символьных значений.

Отметьте, что нумерация элемента индекса массива начинается с нуля (как это принято в СИ).

Для получения практических навыков создадим новый файл с именем Array.php по пути: C:\WebServers\home\localhost\www\php\Array.php следующего содержания (рис. 67), не забывая о соответствии первых пяти строк в коде, ранее рассмотренным примерам (см. например рис. 64).

Рис. 67. Исходный состав файла Array.php.

На рис. 68 показан простейший прием объявления массива с именем и означивание его первых пяти элементов.

Рис. 68. Создание массива с именем , путем присваивания значений переменным.

Результат исполнения программы из рис. 68 показан ниже (если программа сохранена Array.php и сервер запущен ):

Рис. 69. Результат работы программы Array.php.

Для проверки как Вы усвоили циклы, модифицируйте код программы для вывода всего массива на экран.

На рис. 70 показан второй способ создания массива в языке PHP.

Рис. 70. Создание массива с именем $name, с использованием описателя Array.

Результат этой программы (рис. 70) аналогичен результату, показанному на рис. 69.

Если Вы уверены, что индекс массива начинается с нуля, то допустима следующая запись объявления массивов (рис. 71).

Рис. 71. Создание массива с именем $name, без указания индексов.

Ассоциативный массив

Что такое ассоциативный массив и чем он отличается от обычного.

Чтобы понять отличие обычного массива, от ассоциативного (рис. 72) необходимо представить, что индекс массива является не числовым, а символьным.

Рис. 72. Обычный $name и ассоциативный массив $capital.

В программе ассоциативный массив объявляется следующим образом (рис. 73):

Рис. 73. Определение ассоциативного массива.

Результат функции ECHO следующий (рис. 74):

Рис. 74. Результат работы программы из рис. 73.

Формировать  и обращаться к элементам массива можно следующим образом (рис. 75):

Рис. 75. Доступ к элементам массива.

Результат работы программы представленной на рис. 75, показан на рис. 76.

Однако такие программы требуют тщательного тестирования и зависят от версии языка PHP.

Рис. 76. Результат работы программы из рис. 75.

Многомерный массив.

Для рассмотрения вопросов связанных с многомерным массивом создадим как и в предыдущих случаях файл с именем Marray.php следующего содержания.

Рис. 77. Код программы с многомерным массивом.

Многомерный массив – это одномерный массив, элемент которого, в свою очередь, может быть массивом.

Следующий пример показывает суть многомерного массива (рис. 78).

Рис. 78. Пример многомерного массива.

В данном ассоциативном массиве, предназначенном для описания характеристик типов автомобилей, каждая ячейка в свою очередь массив.

Поля вложенного массива несут следующий смысл:

color – цвет автомобиля;

year – год выпуска;

pr  - пробег.

Как создать многомерный массив.

Многомерный массив создается следующим образом (рис. 77).

Нулевому индексу массива с именем $auto[bmw] присваивается значение описателя ARRAY() и в этом одномерном массиве каждому элементу (их всего три) присваивается обычным способом соответствующее значение (цвет, год, пробег).

На рис. 77 показано заполнение только двух столбцов такого многомерного массива (второй ассоциативный индекс имеет имя ‘audi’).

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

Как выводить информацию из многомерного массива.

Так, например, оператор

(показанный на рис.77) выведет на экран информацию из второго столбца отца и из второго столбца вложенного одномерного массива.

Рис. 79. Пример вывода элемента многомерного массива.

Оператор дает такой же  результат, как и оператор, показанный на рис. 77.

Напомним что точка, присутствующая в операторе является носителем операции конкатенации.

Ниже приведены примеры вывода содержимого многомерного массива на экран.

<?php

$auto["bmw"] = array ("color" => "Белый", "year" => "2005", "pr" => "2000");

$auto["audi"] = array ("color" => "Синий", "year" => "2003", "pr" => "2200");

echo "Информация о BMW: <br />";

echo "Цвет: " . $auto['bmw']['color'] . "<br />";

echo "Год: " . $auto['bmw']['year'] . "<br />";

echo "Пробег: " . $auto['bmw']['pr'] . "<br />";

echo "Информация о AUDI: <br />";

echo "Цвет: " . $auto['audi']['color'] . "<br />";

echo "Год: " . $auto['audi']['year'] . "<br />";

echo "Пробег: " . $auto['audi']['pr'] . "<br />";

echo "<br>";

?>

Рис. 79a. Пример вывода элемента многомерного массива.

Следующий пример показывает случай, когда количество элементов во вложенных массивах не совпадает.

// 2-х мерный массив

// sex - пол, age - возраст, height - рост.

$peoples =  array(

  1 => array('sex' => 'муж', 'age' => 19),

  2 => array('sex' => 'жен', 'age' => 18, 'height' => 170)

);

 

// Доступ к элементу вложенного массива

echo "Информация о первом человеке: <br />";

echo "Пол: " . $peoples[1]['sex'] . "<br />";

echo "Возраст: " . $peoples[1]['age'] . "<br />";

echo "Рост: " . $peoples[1]['height'] . "<br />";

echo "Информация о втором человеке: <br />";

echo "Пол: " . $peoples[2]['sex'] . "<br />";

echo "Возраст: " . $peoples[2]['age'] . "<br />";

echo "Рост: " . $peoples[2]['height'] . "<br />";

echo "<br>Вывод через цикл <br>";

for ($c=0; $c<=1; $c++)

{

$I=$c+1;

echo " Информация о человеке $I <br />";

echo "Пол: " . $peoples[$c+1]['sex'] . "<br />";

echo "Возраст: " . $peoples[Sc+1]['age'] . "<br />";

echo "Рост: " . $peoples[$c+1]['height'] . "<br />";

}

Рис. 79b. Пример вывода элемента многомерного массива в цикле.


Тема 8 - Введение в функции.

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

Набор функций поставляемых с определенной версией языка PHP естественно различен. В лекциях используется версия PHP5. 

Основное назначение функций – это группировка группы команд и функций языка программирования с целью уменьшения объема программного кода, т. е. возможность вызова функции из различных точек тела программы.

Правила создания и описания функций в языке PHP во многом совпадают с  правилами языка СИ и всегда начинается со служебного слова Function, после которого указывается имя функции (и ее параметры), после которого в фигурных скобках записываются различные операторы, составляющие тело функции:

Рис. 80. Пример стандартной функции.

Как создаются функции.

Новая функция обычно помещается в начале или в конце программы.

Для получения практических навыков создадим новый файл с именем Function.php по пути: C:\WebServers\home\localhost\www\php\Function.php следующего содержания (рис. 81), не забывая о соответствии первых пяти строк в коде, c ранее рассмотренными примерами.

Рис. 81. Создание файла Function.php.

Заполним блок PHP кода следующей информацией (рис. 82).

Рис. 82. .

Рис. 83. Результат работы функции в теле блока php кода.

Аналогичный результат был бы получен, если в качестве фактического параметра функции была передана константа SQUARE(5).

Значения из функций возвращаются с помощью необязательного оператора return. Может быть возвращён любой тип, в том числе список и объект. Этот оператор немедленно останавливает выполнение функции и передаёт управление обратно на строчку, с которой функция была вызвана.

 Следующий пример (рис. 84) показывает, что вызываться функция может до ее объявления.

Рис. 84. .

Результат работы   приведен ниже.

Рис. 84. Результат работы Function link.

Если нажать на ссылку, то браузер соединиться с указанным адресом и перейдет на сайт , если Интернет у Вас работает.

Если Вы посмотрите код HTML (рис. 85) (нажатие на рис. 84 и выбор ), то в нем будет отсутствовать блок PHP кода.

Рис. 85. Исходный текст HTML после нажатия CTRL+U.

Если функция принимает аргументы, то они записываются как переменные в объявлении функции. Аргумент функции представляет собой переменную, передаваемую в тело функции для дальнейшего использования в операциях. В случае, когда функция принимает больше одного аргумента, эти переменные разделяются запятыми:

function MyFunction($var, $var1, $var2)

Если функция возвращает какое-либо значение, в теле функции обязательно должен присутствовать оператор return:

function MyFunction()

{

 return $ret; // возвращается значение переменной $ret

}

В этом примере показана функция, вычисляющая сумму двух чисел. Эта функция не принимает ни одного аргумента, а просто вычисляет сумму и возвращает полученный результат. После этого, она вызывается в теле оператора echo для вывода результата в браузер. Модифицируем эту функцию так, чтобы она не возвращала полученный результат, а выводила его в браузер. Для этого достаточно внести оператор echo в тело функции:

<?

 function get_sum()

 {

   $var = 5;

   $var1 = 10;

   $sum = $var + $var1;

   echo $sum;

 }

 get_sum();

?>

Переменные $var и $var1 мы можем объявить как аргументы и в этом случае в теле функции их определять не надо:

<?

 function get_sum($var, $var1)

 {

   $sum = $var + $var1;

   echo $sum;

 }

 get_sum(5,2); // выводит 7

?>

Переменная, содержащая значение, переданное через аргумент, называется параметром функции.

В рассмотренных примерах аргументы функции передаются по значению, т. е. значения параметров изменяется только внутри функции, и эти изменения не влияют на значения переменных за пределами функции:

<?

 function get_sum($var) // аргумент передается по значению

 {

   $var = $var + 5;

   return $var;

 }

 $new_var = 20;//тело сценария, где используется функция

 echo(get_sum($new_var)); // выводит 25

 echo("<br>$new_var"); // выводит 20

?>

Для того чтобы переменные переданные функции сохраняли свое значение при выходе из нее, применяется передача параметров по ссылке. Для этого перед именем переменной необходимо поместить амперсанд (&):

 function get_sum($var, $var1, &$var2)

В этом случае переменные $var и $var1 будут переданы по значению, а переменная $var2 - по ссылке. В случае, если аргумент передается по ссылке, при любом изменении значения параметра происходит изменение переменной-аргумента:

<?

 function get_sum(&$var) // аргумент передается по ссылке

 {

   $var = $var + 5;

   return $var;

 }

 $new_var = 20;

 echo(get_sum($new_var)); // выводит 25

 echo("<br>$new_var"); // выводит 25

?>

Область видимости переменных.

Переменные в функциях имеют локальную область видимости. Это означает, что если даже локальная и внешняя переменные имеют одинаковые имена, то изменение локальной переменной никак не повлияет на внешнюю переменную:

<?

 function get_sum()

 {

   $var = 5; // локальная переменная

   echo $var;

 }

 $var = 10; // глобальная переменная

 get_sum(); // выводит 5 (локальная переменная)

 echo("<br>$var"); // выводит 10 (глобальная переменная)

?>

Локальную переменную можно сделать глобальной, если перед ее именем указать ключевое слово global. Если внешняя переменная объявлена как global, то к ней возможен доступ из любой функции:

<?

function get_sum()

 {

   global $var;

   $var = 5; // изменяем глобальную переменную

   echo $var;

 }

 $var = 10;

 echo("$var<br>"); // выводит 10

 get_sum(); // выводит 5 (глобальная переменная изменена)

?>

Доступ к глобальным переменным можно получить также через ассоциативный массив $GLOBALS:

<?

 function get_sum()

 {

   $GLOBALS["var"] = 20; // изменяем глобальную переменную $var

   echo($GLOBALS["var"]);

 }

 $var = 10;

 echo("$var<br>"); // выводит 10

 get_sum(); // выводит 20 (глобальная переменная изменена)

?>

Массив $GLOBALS доступен в области видимости любой функции и содержит все глобальные перемене, которые используются в программе.

Время жизни переменной.

Временем жизни переменной называется интервал выполнения программы, в течение которого она существует. Поскольку локальные переменные имеют своей областью видимости функцию, то время жизни локальной переменной определяется временем выполнения функции, в которой она объявлена. Это означает, что в разных функциях совершенно независимо друг от друга могут использоваться переменные с одинаковыми именами. Локальная переменная при каждом вызове функции инициализируется заново, поэтому функция-счетчик, в приведенном ниже примере всегда будет возвращать значение 1:

 function counter()

 {

   $counter = 0;

   return ++$counter;

 }

Для того, чтобы локальная переменная сохраняла свое предыдущее значение при новых вызовах функции, ее можно объявить статической при помощи ключевого слова static:

 function counter()

 {

   static $counter = 0;

   return ++$counter;

 }

Временем жизни статических переменных является время выполнения сценария. Т. е., если пользователь перезагружает страницу, что приводит к новому выполнению сценария, переменная $counter в этом случае инициализируется заново.


Функции встроенные в PHP.

Функции, которые уже встроены (поставляются) в PHP позволяют решить практически любые интересующие Вас задачи и изучить их все потребует значительного времени. Поэтому в лекциях приводится минимальный набор встроенных функций (Function-1.php) необходимый для выполнения лабораторных работ.

Функция count и strlen

COUNT - считает элементы в переменной.

COUNT() возвращает число элементов в переменной типа массив. Если переменная не является массивом, возвращаемое значение будет 1 (потому что нормальная переменная подобна массиву с одним элементом). Если переменная не определена, возвращаемое значение будет 0.

STRLEN() - возвращает длину строки.

Пусть тело PHP (см. файл C:/WebServers/localhost/php/Function-1.php) представлено в виде (рис. 86).

Рис. 86. Исходный код скрипта Function-1.php.

Рис. 87. Результат кода на экране.

Напомним, что точки, показанные на рис. 86 являются символом операции конкатенации.

Как останавливать работу любого PHP скрипта.

Функция EXIT и DIE().

Если, по каким-либо причинам, возникает необходимость остановить работу программы (скрипта), то используется функция EXIT или эквивалентную ей функцию DIE().

Рис. 88. Остановка программы. Использование функции EXIT.

Рис. 89. Результат кода на экране программы рис 88.

Еще пример exit(), точнее ее эквивалента die()

<?php

$filename = 'C:\WebServers\home\localhost\www\php\if.php';

$file = fopen ($filename, 'r')

   or die("<br>Ошибка открытия файла ($filename)");

    //@fopen -погасит сообщение оболочки

?>

Обратите внимание на слеш \.

Функция LIST

list - присваивает значения переменным, как если бы они были массивом.

C помощью функции LIST происходит присваивание значения сразу нескольким переменных за один проход;

Рис. 90. Назначение функции LIST.

Ниже приводятся примеры использования функции LIST (все коды представлены в файле:

<папка тестов>:\WebServers\home\localhost\www\php\function-1.php).

Рис. 91. Пример функции LIST.

Этот код даёт на выводе следующее окно (рис. 92).

Рис. 92. Результат работы функции LIST и Var_dump.

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

Например, если переменные $d и $e определены, как показано ниже:

$d = 3.1;

$e = TRUE;

var_dump($d,$e);

То вывод на экране будет:

float(3.1)

bool(true)

Предупреждение!

list() - присваивает значения переменным, начиная с самого первого параметра. Если вы используете обычные переменные, вам не нужно ни о чём беспокоиться. Но если вы используете массивы с индексами, Вы обычно ожидаете, что порядок индексов в массиве будет тот же, что записан Вами в list() - слева направо; что в действительности не так. Присвоение идёт в обратном порядке.

Следующий пример раскрывает эту особенность.

что даст результат: 

Рис. 92а. Особенность использования индексных массивов с функцией LIST.

На рис. 93 приведена программа, использующая рассмотренные ранее конструкции языка PHP и показывающая один из вариантов использования вывода содержимого массива на экран браузера.

Отметим, что в ней использована стандартная функция PHPEACH().

EACH(имя массива) - возвращает текущую пару ключ/значение из массива и передвигает указатель массива на следующий элемент.

Если внутренний указатель массива указывает после конца содержимого массива, each() возвращает FALSE.

Рис. 93. Блок кода на PHP для вывода массива на экран (см. исходный код в программе Funchion-1.php).

Вопросы форматирования вывода данных рассмотрены в лекции “Выборка данных”.

Рис. 94. Результат работы блока кода на PHP из рис. 93.

Функция даты и времени

date -- Форматирует системную дату/время

Описание: string date ( string format [, int timestamp] )

Возвращает время, отформатированное в соответствии с аргументом format, используя метку времени, заданную аргументом timestamp или текущее системное время, если timestamp не задан. Другими словами параметр, timestamp является необязательным и по умолчанию равен значению, возвращаемому функцией time().

Для ознакомления с функциями  обработки дат и времени создадим рабочий файл с именем Date.php.

Рис. 95. Блок кода на PHP содержащий функцию DATE().

К этому моменту у Вас должен быть созданы файлы, указанные в правой части рис. 95, а в редакторе набрана информация в блоке кода PHP , обведенная на рис. 95 овалом.

На экране подобный код (рис. 95) выдаст следующую информацию (рис. 96):

Рис. 96. Результат форматирования даты на основе функции DATE().

Нужный формат подбирается из ниже представленного списка (рис.97).

В строке формата распознаются следующие символы:

  •  a - "am" или "pm"
  •  A - "AM" или "PM"
  •  B - Время в стадарте Swatch Internet От 000 до 999
  •  d - день (число) месяца, 2 цифры с ведущим нулём, если необходимо; т. е. от "01" до "31"
  •  D - день недели, буквенный, 3 буквы; например, "Fri"
  •  F - месяц, буквенный, long; например, "January"
  •  g - час, 12-часовой формат без ведущих нулей; т.е. от "1" до "12"
  •  G - час, 24-часовой формат без ведущих нулей; т.е. от "0" до "23"
  •  h - час, 12-часовой формат; т.е. от "01" до "12"
  •  H - час, 24-часовой формат; т.е. от "00" до "23"
  •  i - минуты; т.е. от "00" до "59"
  •  I (заглавная i) - "1", если Daylight Savings Time, "0" - в противном случае.
  •  j - день (число) месяца без ведущих нулей; т.е. от "1" до "31"
  •  l ('L' в нижнем регистре) - день недели, буквенный, long; например, "Friday"
  •  L - boolean, указывающее, високосный ли год; т.е. "0" или "1"
  •  m - месяц; т.е. от "01" до "12"
  •  M - месяц, буквенный, 3 буквы; например, "Jan"
  •  n - месяц без ведущих нулей; т.е. от "1" до "12"
  •  O - Разница с временем по Гринвичу, в часах; например, "+0200"
  •  r - RFC 822 формат даты; например, "Thu, 21 Dec 2000 16:01:07 +0200"
  •  s - секунды; т.е. от "00" до "59"
  •  S - простой английский суффикс для дня (числа) месяца, 2 символа; т.е. "st", "nd", "rd" или "th"
  •  t - количество дней в данном месяце; т.е. от "28" до "31"
  •  T - установка Timezone/Часовой пояс на данной машине; например, "EST" или "MDT"
  •  U - секунды эпохи Unix Epoch (начиная с January 1 1970 00:00:00 GMT)
  •  w - день недели, числовой, т.е. от "0" (Sunday) до "6" (Saturday)
  •  W - ISO-8601 номер недели в году, недели начинаются с понедельника/Monday
  •  Y - год, 4 цифры; например, "1999"
  •  y - год, 2 цифры; например, "99"
  •  z - день года; т.е. от "0" до "365"
  •  Z - смещение часового пояса, в секундах (т.е. от "-43200" до "43200"). Смещение часовых поясов к западу от UTC всегда отрицательное, а для поясов в востоку от UTC - всегда положительное.

Рис. 97. Список символов для выбора формата в функции DATE().

Например, чтобы узнать время в котором Вы запускаете функцию Date() на исполнение следует указать следующий формат:

DATE ("Hi - s"),

что будет обозначать H - час, 24-часовой формат; i - минуты; s – секунды.

Функция позволяет определить время, затрачиваемое на какую-то работу, например:

Echo даст результат .

Функции ISSET и UNSET

Функция ISSET проверяет существование переменной.

Функция UNSET уничтожает переменную внутри скрипта.

Необходимость в этих стандартных функциях возникает при отладке программы.

Ниже приведены программы (рис. 98a и рис. 98b) раскрывающие суть этих функций.

Рис. 98а. Кусок программы и ее результат.

Эти функции также работает с элементами массивов (рис. 98): 

Рис. 98b. Кусок программы DATE.php обработки массива и ее результат.


Тема 9 - Передача переменных - метод GET.

Передача переменных в PHP фаил извне.

Передача переменных в файл PHP осуществляется через адресную строку браузера, в которой после имени файла указывается символ “?”, а затем имя переменной и ее значение.

Например:

S_GET1.php – имя файла;

? – признак, что в файл передается переменная;

a – имя;

10 - значение, присваиваемое переменной a.

Чтобы уяснить механизм подобной передачи создадим файл с именем S_GET1.php таким же способом, как создавались ранее все тестовые файлы (см. например, рис. 11, 12).

Пусть содержимое нового файла S_GET1.php (рис. 100), созданного Вами,  находится по адресу (рис. 99):

С:\WebServers\home\localhost\www\php\S_GET1.php.

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

Рис. 99. Новый файл S_GET1.php для тестирования метода GET.

Рис. 100. Содержимое файла S_GET1.php для тестирования метода GET.

При попытке запустить данный файл на исполнение, указав в адресной строке браузера имя файла мы, естественно, получим ошибку (рис. 101).

Рис. 101. Ошибка при запуске файла S_GET1.php на исполнение.

Внимание! Проверьте запущен ли Apache и MySQL -  .

Обратите внимание на строку 14 в коде на рис. 100 и ответьте на вопрос содержит ли она ошибку?

Проверить наличие и правильности переменной можно также с помощью встроенной функции GETTYPE(<имя переменной>). Так, например, если блок кода на PHP из рис. 100 представить в виде (рис. 102) и запустить сценарий на исполнение, то получим результат в окне браузера показанный на рис. 103.

Рис. 102. Использование функции gettype() на доступность переменной.

Результат исполнения программы из рис. 102 представлен ниже (рис. 103).

Рис. 103. Результат использования функции gettype() на доступность переменной.

Напомним в РНР переменные начинаются со знака доллара ($). За этим знаком может следовать любое количество буквенно-цифровых символов и символов подчеркивания, но первый символ не может быть цифрой или подчеркиванием. Следует также помнить, что имена переменных в РНР чувствительны к регистру, в отличие от ключевых слов.

После того, как запрос клиента проанализирован веб-сервером и передан РНР машине, последняя устанавливает ряд переменных, которые содержат данные, относящиеся к запросу и доступны все время его выполнения.

Сначала РНР берет переменные окружения Вашей системы и создает переменные с теми же именами и значениями в окружении сценария РНР для того чтобы сценариям, расположенным на сервере были доступны особенности системы клиента. Эти переменные помещаются в ассоциативный массив $HTTP_ENV_VARS.

Естественно, что переменные массива $HTTP_ENV_VARS являются системно зависимыми (поскольку это фактически переменные окружения). Посмотреть значения переменных окружения для Вашей машины Вы можете при помощи команды env (Unix) или set (Windows).

Затем РНР создает группу GET -переменных, которые создаются при анализе строки запроса. Строка запроса хранится в переменной $QUERY_STRING и представляет собой информацию, следующую за символом "?" в запрошенном URL.

РНР разбивает строку запроса по символам & на отдельные элементы, а затем ищет в каждом из этих элементов знак "=". Если знак "=" найден, то создается переменная с именем из символов, стоящих слева от знака равенства.

Например, браузер на стороне сервера, анализируя адресную строку сайта определяет, что в запросе передается переменная с именем ‘а’ и ее значение определяется символами после знака равенства. Имя этой переменной и ее значение заносится системой в ассоциативный массив с именем $_GET.

И если это имя массива указать в теле программы, то фактически происходит передача значения в тело программы.

Проведем в программе S_GET1.php следующую модификацию (рис. 104).

Рис. 104. Использование глобального массива $_GET для передачи переменной.

Теперь в адресной строке присвоим переменной a=5 следующим образом (рис. 105).

Рис. 105. Определение переменной и ее значения в адресной строке.

Если далее нажать ,  то последует следующий вывод (рис. 106):

Рис. 106. Определение переменной и ее значения в адресной строке.

Если возникает необходимость передать, например две переменные, через адресную строку, то после информации о первой переменной (через символ &), вводится имя второй переменной (рис. 107).

Рис. 107. Определение переменной  b и ее значения в адресной строке.

 Тогда, если тело программы привести к виду рис. 108, то результат после сохранения программы представлен на рис.109.

Рис. 108. Использование метода GET для двух переменных.

Как передавать переменные в фаил с помощью ссылок на этот фаил.

Следующий пример показывает использование ссылки href

Рис. 109. Использование метода GET и ссылки href.

Первый вывод результата программы из рис. 109 дает результат (рис. 110).

Рис. 110. Использование метода GET и ссылки

Нажатие на (рис. 110) даст результат (рис. 111).

Рис. 111. Использование метода GET и ссылки

Список глобальных массивов используемых в PHP зависит от версии языка и  если, Вы пишете программу в специальном редакторе, то после указания символов $_  редактор показывает список этих глобальных массивов (рис. 112).

Рис. 112. Список глобальных массивов в PHP.

Если запрос страницы выполняется при помощи метода POST, то появляется группа POST-переменных, которые интерпретируются также и помещаются в массив $HTTP_POST_VARS.


Тема 10 - Передача переменных   -  метод POST.

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

Для получения навыков по методу POST создадим два файла POST1.php (рис. 113) и POST2.php (рис. 113) по известной Вам технологии (см. рис. 11-12)

Рис. 113. Исходное состояние файлов POST1.php и POST2.php.

На начальном этапе содержимое файлов POST1.php и POST2.php идентичны. В файле POST1.php, используя форму (рис. 114), будем подготавливать переменные, которые затем будут доступны в файле POST2.php.

Когда форма отправляется в PHP-скрипт, любые переменные этой формы автоматически делаются доступными скрипту PHP. Если опция конфигурации  track_vars включена/on (см. php.ini), то эти переменные будут находиться в ассоциативных массивах $_POST, $_GET и/или $_FILES, в соответствии с источником переменной в вопросе.

Рис. 114. Простая форма на экране.

Чтобы получить подобное изображение (рис. 114) в файл Post1.php необходимо ввести следующий текст (рис. 115):

<body>

<form action="post2.php" method="post">

   Name (Имя): <input type="text" name="username"><br>

   <input type="submit"><!--Комментарий в HTML Это кнопка-->

</form>

</body>

Рис. 115. Описание формы в программе, c кнопкой submit-Отправить.

Прим.

Файл HTML может содержать комментарии, дающие пояснения для человека, читающего HTML код. Комментарии не влияют каким-либо образом на представление документа, т.е. они игнорируются броузером.

Комментарий  начинается с четырехсимвольной последовательности <!-- (знак "меньше чем", восклицательный знак, два дефиса) и завершается трехсимвольной последовательностью --> (два дефиса, знак "больше чем"). Например: <!—Это кнопка -->.

Когда такая форма отправляется на сервер, значение из поля ввода text (что соответствует переменной именем $username) будет доступно в глобальном ассоциативном массиве $_POST['username'].

Если в поле на рис. 114 введут какое то значение, например (рис. 116) и нажмут

Рис. 116. Простая форма на экране.

Тогда, если в файл Post2.php внесут информацию (рис. 117):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

<title>Передача переменных методом POST</title>

</head>

<body>

<?php  // вновь добавленный блок

echo "В файл Post2.php обратились из вне<br>";

$username=$_POST['username'];

echo "и передали значение: $username";

?>    <!--конец блока и далее пошел HTML код-->

</body>

</html>

Рис. 117. Тело модифицированного файла Post2.php.

То сервер выведет на экран (рис. 118):

Рис. 118. Реакция на из рис. 116.

Фактически файл Post2.php является обработчиком события и поэтому в программе Post2.php необходимо предусматривать все ошибочные действия пользователя при заполнении элементов (полей) формы, указанных в теле формы на рис. 115.

Так, например, следующий модифицированный код программы Post2.php (рис. 119) позволяет учитывать ситуацию, когда пользователь нажимает кнопку , но забывает ввести (означить) информацию.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

<title>Передача переменных методом POST</title>

</head>

<body>

<?php  //

  if (!isset($_POST['username'])):

   echo "В файл Post2.php обратились из вне, не означив переменную<br>";

   exit; //выйти из программы

  endif;

   echo "В файл Post2.php обратились из вне<br>";

   $username=$_POST['username'];

   echo "и передали значение: $username";

?>    <!--конец блока и далее пошел HTML код-->

</body>

</html>

Рис. 119. Тело модифицированного файла Post2.php с проверкой ввода информации в поле username .

Если форма была отправлена с помощью метода POST, то данные, помещенные в поле username, будут сохранены в $_POST ['username']; если же форма была передана с помощью метода GET – то в $_GET ['username'].

Кроме того, данные доступны в суперглобальном массиве $_REQUEST['username'].

Например, если строку кода echo "В файл Post2.php обратились из вне<br>"; из рис. 119 заменить строками вида:

echo " В файл Post2.php обратились из вне <br>";

echo "Глобальный $_REQUEST=

REQUEST['username'=".$_REQUEST['username']."- значение";

то, результат (после сохранения программы) будет следующим (рис. 120) после ввода и нажатия “Отправить”:

Рис. 120. Использование массива $_REQUEST.

Рассмотрим пример как с помощью редактора создать форму в файле post1.php, чтобы из него передавать переменные в файл post2.php. Пусть состояние файла post1.php соответствует рис.121. Курсор в редакторе Dremwefver находится между тегами <body> … </body> . Нажав кнопку

Рис. 121. Исходное состояние окна редактора с файлом Post1.php.

будет выведено меню, из которого необходимо выбрать пункт .

Рис. 121a. Ввод формы в файл Post1.php.

Использование данного пункта приведет к выводу на экран окна, содержимое которого представлено на рис. 122.

В поле указываем файл обработчик Post2.php, который будет отслеживать корректность ввода информации в форме представленную в файле Post1.php.

Рис. 122. Формирование формы в файле Post1.php

В поле указываем метод POST (рис. 123) и характеристики формы. В поле “Целевой объект” укажем _blank, что обозначает - файл Post2.php надо открывать в новом окне.

Рис. 123. Формирование формы в файле Post1.php

Нажатие приводит к созданию описания формы в теле текста программы Post1.php.

Внутри тела формы необходимо создать поля формы.

Для этого введем абзац , для того чтобы элементы формы были упорядочены.

Внутрь абзаца <p…./p> вставим обычное текстовое поле (рис. 124)  

Рис. 124. Использование кнопки на вкладке для вставки поля

Нажатие на кнопке текстового поля приведет к окну (рис. 125) в котором укажем, что тип его TEXT, имя переменной name (эта переменная будет передоваться в файл Post2.php).

Рис. 125. Формирование характеристик поля в файле Post1.php

Нажатие (на рис. 125) приведет к появлению в файле Post1.php следующей вставки (рис. 126):

Рис. 126. Формирование характеристик поля в файле Post1.php

Приведем строку из рисунка 126 к виду:

и продублируем ее, изменив ее содержание на:

Далее введем кнопку для отправки сообщения.  Введем тег абзаца , в который и вставим кнопку используя пиктограмму (рис. 127).

Рис. 127. Формирование характеристик поля в файле Post1.php.

К этому моменту тело формы показано на рис. 128.

Рис. 128. Тело формы в тексте программы Post1.php.

 

Нажатие на пиктограмме кнопки (рис. 127) приведет к появлению окна, которое следует заполнить следующей информацией (рис. 129)

Рис. 129. Окно для заполнения характеристик кнопки.

В указано, что тип этого поля относится к объекту кнопка.

В указано имя переменной кнопки (это имя может быть любое, но для удобства и понимания, что это кнопка - использовано имя SUBMIT-отправить).

В указывается смысловая нагрузка использования формируемой кнопки.

Нажатие (рис. 129) приведет к появлению в теле формы (рис. 128) следующей информации:

<p><input name="submit" type="submit" value="Отправить"></p>

Если в редакторе Dreamweaver использовать кнопку (рис. 130),

Рис. 130. Вызов формы на экран без выхода в браузер.

то, на экране мы увидим нашу будущую форму (рис. 131):

Рис. 131. Вид формы в дизайнере без выхода в браузер.

Таким образом, тело формы в файле Post1.php приобретает вид (рис. 132), в которой определены три переменные, которые через глобальный массив $_POST, будут доступны в файле Post2.php (если их там объявить).

<body>

<form action="Post2.php" method="post" name="Form1" target="_blank">

<p>Введите Ваше имя: <br> <input name="name"

                                  type="text" size="20"> </p>

<p>Введите Вашу фамилию: <br> <input name="lastname"

                                  type="text" size="20"> </p>

<p><input name="submit" type="submit" value="Отправить"></p>

</form>

Рис. 132. Текст кода формы в файле Post1.php.

Сохраните файл Post1.php и посмотрите результат через браузер.

Результат должен быть следующим (рис. 133).

Рис. 133. Форма ввода на экране - означивание переменных формы, объявленных в файле Post2.php.

Ниже приводится текст файла Post2.php с переменными доступными через глобальный массив $_POST (рис. 134 - приведен только Php блок).

<?php

$name = $_POST['name']; // передача переменной через метод Post

$lastname = $_POST['lastname'];

if (!isset($name)):

 echo "В файл Post2.php обратились из вне, не определив переменную<br>";

exit;          //выйти из программы

endif;

if (empty($name)) { //  проверка на пустое значение переменной

    echo '$name Пусто. Введите Фамилию ';

exit; //выйти из программы

}

//echo "Глобальный $_REQUEST=

//REQUEST['username'=".$_REQUEST['username']."- значение";

//$username=$_POST['username'];

//echo "<br> и передали значение: $username";

echo "Пользователь ввел Имя: $name ; Фамилия: $lastname..";

?>

Рис. 134. Объявление переменных формы в файле Post2.php.

В представленной программе (рис. 134) определены две переменные $name и $lastname и показан случай проверки переменной $name на пустое значение, с помощью стандартной функции if (empty($name)).

Далее введем значения (рис. 135) и нажмем . Результат показан на рис. 136. 

Рис. 135. Ввод значений переменных формы, используя адрес Post1.php.

Рис. 136. Результат получен автоматически и используется адрес Post2.php.

Обратите внимание, если Вы вновь в адресной строке укажите  http://localhost/php/post1.php  и  замените имя Иван на имя Петр (не попадая на поле ввода фамилии нажмете ), то получите - (прежде чем проводить подобный эксперимент решите что же должно быть выведено) информацию. Если Ваше решение совпадет с решением машины, то Вы правильно понимаете глобальные переменные.

 Следующая схема (рис. 137) еще раз поясняет невидимую работу метода POST.

Рис. 137. Схема передачи переменных методом Post.

Форма — это инструмент, с помощью которого HTML-документ может послать некоторую информацию в некоторую заранее определенную точку внешнего мира, где информация будет некоторым образом обработана.

В качестве такой "точки" в большинстве случаев выступает программа, написанная на Перл или Си. Программы, обрабатывающие данные, переданные формами, часто называют CGI-скриптами. Сокращение CGI (Common Gateways Interface) означает "общепринятый интерфейс шлюзов". Написание CGI-скриптов в большинстве случаев требует хорошего знания соответствующего языка программирования и возможностей операционной системы.

В последнее время  распространение получил язык PHP/FI, инструкции которого можно встраивать прямо в HTML-документы (документы при этом сохраняются в виде файлов с расширением *.pht или *.php).

Формы передают информацию программам-обработчикам в виде пар [имя переменной]=[значение переменной]. Имена переменных следует задавать латинскими буквами. Значения переменных воспринимаются обработчиками как строки, даже если они содержат только цифры.

Как устроена форма

Форма открывается меткой <FORM> и заканчивается меткой </FORM>.

HTML-документ может содержать в себе несколько форм, однако формы не должны находиться одна внутри другой. HTML-текст, включая метки, может размещаться внутри форм без ограничений.

 Метка <FORM> может содержать три атрибута, один из которых является обязательным. Вот эти атрибуты:

ACTION

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

METHOD

Определяет, каким образом (иначе говоря, с помощью какого метода протокола передачи гипертекстов) данные из формы будут переданы обработчику. Допустимые значения: METHOD=POST и METHOD=GET. Если значение атрибута не установлено, по умолчанию предполагается METHOD=GET.

ENCTYPE

Определяет, каким образом данные из формы будут закодированы для передачи обработчику. Если значение атрибута не установлено, по умолчанию предполагается ENCTYPE=application/x-www-form-urlencoded.

Простейшая форма

  Для того, чтобы запустить процесс передачи данных из формы обработчику, нужен какой-то орган управления. Создать такой орган управления очень просто:

<INPUT TYPE=submit>

  Встретив такую строчку внутри формы, браузер нарисует на экране кнопку с надписью Submit (читается "сабмит" с ударением на втором слоге, от английского "подавать"), при нажатии на которую все имеющиеся в форме данные будут переданы обработчику, определенному в метке <FORM>.

  Надпись на кнопке можно задать такую, какая нравится, путем введения атрибута VALUE="[Надпись]" (читается "вэлью" с ударением на первом слоге, от английского "значение"), например:

<INPUT TYPE=submit VALUE="Поехали!">

  Теперь мы знаем достаточно для того, чтобы написать простейшую форму . Она не будет собирать никаких данных, а просто вернет нас к тексту этой главы.

<HTML>

<HEAD>

<TITLE>Пример 11</TITLE>

</HEAD>

<H1>Простейшая форма </H1>

<FORM ACTION="1.html"> <!--Это начало формы-->

<INPUT TYPE=submit VALUE="Назад, к Основам html">

</FORM> <!--Это конец формы-->

</BODY>

</HTML>

Нужен рис QQQ

 

 

  Надпись, нанесенную на кнопку, можно при необходимости передать обработчику путем введения в определение кнопки атрибута NAME=[имя] (читается "нэйм", от английского "имя"), например:

<INPUT TYPE=submit NAME=button VALUE="Поехали!">

  При нажатии на такую кнопку обработчик вместе со всеми остальными данными получит и переменную button со значением Поехали!.

  В форме может быть несколько кнопок типа submit с различными именами и/или значениями. Обработчик, таким образом, может действовать по-разному в зависимости от того, какую именно кнопку submit нажал пользователь.

Как форма собирает данные

  Существуют и другие типы элементов <INPUT>. Каждый элемент <INPUT> должен включать атрибут NAME=[имя], определяющий имя элемента (и, соответственно, имя переменной, которая будет передана обработчику). Имя должно задаваться только латинскими буквами. Большинство элементов <INPUT> должны включать атрибут VALUE="[значение]", определяющий значение, которое будет передано обработчику под этим именем. Для элементов <INPUT TYPE=text> и <INPUT TYPE=password>, однако, этот атрибут не обязателен, поскольку значение соответствующей переменной может вводиться пользователем с клавиатуры.

  Основные типы элементов <INPUT>:

TYPE=submit

Кнопка отправляющая данные. Пример использования смотри выше.

TYPE=buttom

Кнопка без определенных действий. Пример:

<INPUT TYPE=submit VALUE="Кнопка без определенных действий произвольного размера"> Пример смотри ниже.

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

TYPE=file

Специальные поля с кнопкой для отправки фалов. Пример:

<INPUT TYPE=file NAME=button VALUE="Поехали!"> С тем, как выглядит кнопка в действии, можно познакомиться в примере в конце урока. Там же - все остальные типы элементов форм.

 

TYPE=text

Определяет окно для ввода строки текста. Может содержать дополнительные атрибуты SIZE=[число] (ширина окна ввода в символах) и MAXLENGTH=[число] (максимально допустимая длина вводимой строки в символах). Пример:

<INPUT TYPE=text SIZE=20 NAME=user VALUE="Иван">

Определяет окно шириной 20 символов для ввода текста. По умолчанию в окне находится текст Иван, который пользователь может редактировать. Отредактированный (или неотредактированный) текст передается обработчику в переменной user.

TYPE=password

Определяет окно для ввода пароля. Абсолютно аналогичен типу text, только вместо символов вводимого текста показывает на экране звездочки (*). Пример:

<INPUT TYPE=password NAME=pw SIZE=20 MAXLENGTH=10>

Определяет окно шириной 20 символов для ввода пароля. Максимально допустимая длина пароля — 10 символов. Введенный пароль передается обработчику в переменной pw.

TYPE=radio

Определяет радиокнопку. Может содержать дополнительный атрибут checked (показывает, что кнопка помечена). В группе радиокнопок с одинаковыми именами может быть только одна помеченная радиокнопка. Пример:

<INPUT TYPE=radio NAME=modem VALUE="9600" checked> 9600 бит/с

<INPUT TYPE=radio NAME=modem VALUE="14400"> 14400 бит/с

<INPUT TYPE=radio NAME=modem VALUE="28800"> 28800 бит/с 

Определяет группу из трех радиокнопок, подписанных 9600 бит/с, 14400 бит/с и 28800 бит/с.

Первоначально помечена первая из кнопок. Если пользователь не отметит другую кнопку, обработчику будет передана переменная modem со значением 9600. Если пользователь отметит другую кнопку, обработчику будет передана переменная modem со значением 14400 или 28800.

TYPE=checkbox

Определяет квадрат, в котором можно сделать пометку. Может содержать дополнительный атрибут checked (показывает, что квадрат помечен). В отличие от радиокнопок, в группе квадратов с одинаковыми именами может быть несколько помеченных квадратов. Пример:

<INPUT TYPE=checkbox NAME=comp VALUE="PC"> Персональные компьютеры

<INPUT TYPE=checkbox NAME=comp VALUE="WS" checked> Рабочие станции

<INPUT TYPE=checkbox NAME=comp VALUE="LAN"> Серверы локальных сетей

<INPUT TYPE=checkbox NAME=comp VALUE="IS" checked> Серверы Интернет 

Определяет группу из четырех квадратов. Первоначально помечены второй и четвертый квадраты. Если пользователь не произведет изменений, обработчику будут переданы две переменные: comp=WS и comp=IS.

TYPE=hidden

Определяет скрытый элемент данных, который не виден пользователю при заполнении формы и передается обработчику без изменений. Такой элемент иногда полезно иметь в форме, которая время от времени подвергается переработке, чтобы обработчик мог знать, с какой версией формы он имеет дело. Другие возможные варианты использования Вы вполне можете придумать сами. Пример:

<INPUT TYPE=hidden NAME=version VALUE="1.1">

Определяет скрытую переменную version, которая передается обработчику со значением 1.1.

TYPE=reset

Определяет кнопку, при нажатии на которую форма возвращается в исходное состояние. Поскольку при использовании этой кнопки данные обработчику не передаются, кнопка типа reset может и не иметь атрибута name. Пример:

<INPUT TYPE=reset VALUE="Очистить поля формы">

Определяет кнопку Очистить поля формы, при нажатии на которую форма возвращается в исходное состояние.

  Помимо элементов <INPUT>, формы могут содержать меню <SELECT> и поля для ввода текста <TEXTAREA>.

Меню <SELECT> из n элементов выглядит примерно так:

<SELECT NAME="[имя]">

<OPTION VALUE="[значение 1]">[текст 1]

<OPTION VALUE="[значение 2]">[текст 2]

...

<OPTION VALUE="[значение n]">[текст n]

</SELECT>

  Как Вы видите, меню начинается с метки <SELECT> и заканчивается меткой </SELECT>. Метка <SELECT> содержит обязательный атрибут NAME, определяющий имя переменной, которую генерирует меню.

 Метка <SELECT> может также содержать атрибут MULTIPLE, присутствие которого показывает, что из меню можно выбрать несколько элементов. Большинство браузеров показывают меню <SELECT MULTIPLE> в виде окна, в котором находятся элементы меню (высоту окна в строках можно задать атрибутом SIZE=[число]). Меню <SELECT> в большинстве случаев показывается в виде выпадающего меню.

  Метка <OPTION> определяет элемент меню. Обязательный атрибут VALUE устанавливает значение, которое будет передано обработчику, если выбран этот элемент меню. Метка <OPTION> может включать атрибут checked, показывающий, что данный элемент отмечен по умолчанию.

Разберем небольшой пример.

<SELECT NAME="selection">

<OPTION VALUE="option1" checked>Вариант 1

<OPTION VALUE="option2">Вариант 2

<OPTION VALUE="option3">Вариант 3

</SELECT>

  Такой фрагмент определяет меню из трех элементов: Вариант 1, Вариант 2 и Вариант 3. По умолчанию выбран элемент Вариант 1. Обработчику будет передана переменная selection значение которой может быть option1 (по умолчанию), option2 или option3.

 После всего, что мы уже узнали, элемент <TEXTAREA> может показаться совсем простым. Например:

<TEXTAREA NAME=address ROWS=5 COLS=50>

А здесь - Ваш адрес...

</TEXTAREA>

Все атрибуты обязательны. Атрибут NAME определяет имя, под которым содержимое окна будет передано обработчику (в примере — address). Атрибут ROWS устанавливает высоту окна в строках (в примере — 5). Атрибут COLS устанавливает ширину окна в символах (в примере — 50).

Текст, размещенный между метками <TEXTAREA> и </TEXTAREA>, представляет собой содержимое окна по умолчанию. Пользователь может его отредактировать или просто стереть.

Важно знать, что русские буквы в окне <TEXTAREA> при передаче обработчику могут быть конвертированы в соответствующие им символьные объекты.


Тема 11 - Суперглобальный массив $_SERVER.

Цель:

  •  Что такое суперглобальный массив SERVER и откуда в нем появляются данные.
  •  Какая информация попадает в это массив.
  •  Как использовать информацию из этого массива (рассмотрим на примере).
  •  Как узнать IP-адрес посетителя Вашего сайта с помощью этого суперглобального массива.
  •  Как узнать какая операционная система у посетителя, и под каким браузером он зашел на Ваш сайт.
  •  Как узнать по какой ссылке человек пришел на Ваш сайт.
  •  Где можно подробно узнать о всех значениях глобального массива SERVER.

При обращении к любому сайту в Интернете (например Yandex.ru, Google.ru ) идет обращение к указанному серверу на предмет поиска адреса сайта и выдачи информации из страницы сайта.

В нашем случае, например, при указании адреса (рис. 138) идет обращение на Вашу машину (локальный сервер) для вывода этой страницы в браузере текущей машины.

Напомним, что на каждой машине присутствует файл HOSTS (см. лекцию по установке сервера). На основании этого файла-справочника для локальной машины, браузер определяет, где хранится файл с именем Post1.php. Поэтому обращение к Интернету не происходит и обработка происходит на локальной машине в среде Web-сервера Apache

Кроме адреса сайта, на сервер, клиент передает дополнительную информацию, которая скрыта от пользователя и передается нашим браузером, не зависимо от нашего желания.

Рис. 138. Адрес сайта на локальной машине.

К такой информации относится:

- информация о типе браузера и сведения об операционной системе клиента;

- какой IP адрес используется клиентом;

- откуда был запрос на эту страницу и т. д.

Указанная информация фиксируется сервером в суперглобальном массиве - имя которого $_SERVER.

Элемент $_SERVER['HTTP_USER_AGENT'] содержит информацию о типе и версии браузера и операционной системы посетителя.

В элемент $_SERVER['REMOTE_ADDR'] помещается IP-адрес клиента. При тестировании на локальной машине — этот адрес будет равен 127.0.0.1.

В элемент $_SERVER['SERVER_ADDR'] – помещается  Ip адрес сервера.

В элементе $_SERVER['HTTP_REFERER'] приводится адрес страницы, с которой посетитель пришёл на данную страницу.

В элемент $_SERVER['SERVER_NAME'] помещается имя сервера.

В элемент $_SERVER['REQUEST_URI'] содержит имя скрипта, начиная от корневой директории виртуального хоста и параметры, т.е. если строка запроса представляет собой адрес.

И т.д..

Описание элементов массива  .$_SERVER можно посмотреть по адресу:

http://softtime.ru/info/

http://www.softtime.ru/article/index.php?id_article=69

Следующая схема (рис. 140) поясняет связь между скриптом с именем MSERVER.php (текст которого приведен на рис. 139) и суперглобальным массивом $_SERVER.

Для анализа и тестирования массива $_SERVER создадим тренировочный файл с именем MSERVER.php (рис. 140), используя технологию, рассмотренную ранее (см. рис. 11-12) или скопируем текст из этого файла (содержимое которого Вы читаете) в файл по адресу (в последнем случае файл должен быть создан средствами, например, Total Comander и быть пустым).

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

<title>Суперглобальный массив SERVER</title>

</head>

<body>

<?php

echo "Ваш ip адрес: SERVER['REMOTE_ADDR'] =".$_SERVER['REMOTE_ADDR'];

echo "<br>Ваш браузер и операционка: ".$_SERVER['HTTP_USER_AGENT'];

if (isset($_SERVER['HTTP_REFERER']))

{

echo "<br>Вы пришли на данную страницу с адреса: ".$_SERVER['HTTP_REFERER'];

}

else

{

echo "<br>Вы попали на данную страницу напрямую! Имя сервера ".$_SERVER['SERVER_NAME'];

echo "<br>Исполняется скрипт - http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];

}

?>

</body>

</html>

Рис. 139. Исходный текст файла MSERVER.php.

Рис. 140. Состав массива $_SERVER и вывод на экран результата работы Mserver.php.

Поясним,  как используется $_SERVER['HTTP_REFERER'] на следующем примере. Для этого в  тело коды формы в файле Post1.php (рис.132) добавим ссылку <a href="MServer.php" target="_blank">Страница MServer.php</a> (рис. 141)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

<title>Передача методом POST</title>

</head>

<body>

<form action="Post2.php" method="post" name="Form1" target="_blank">

<!--Тело формы и ее поля-->

<p>Введите Ваше имя: <br> <input name="name" type="text" size="20"> </p>

<p>Введите Вашу фамилию: <br> <input name="lastname" type="text" size="20"> </p>

<a href="MServer.php" target="_blank">Страница MServer.php</a>

<p><input name="submit" type="submit" value="Отправить"></p>

</form>

<!--<a href="MServer.php" target="_blank">Страница MServer.php</a>-->

</body>

</html>

Рис. 141. Модифицированный текст файла Post1.php.

Сохраним файл Post1.php и укажем его в адресной строке:

Тогда на экране появится следующая информация (рис. 142).

Рис. 141. Результат модификации текста файла Post1.php.

Если нажать на ссылке , то произойдет вызов станицы (рис. 142).

Рис. 142. Результат выполнения ссылки в файле Post1.php.


Тема 12 - Инструкция INCLUDE.

Цель:

  •  Для чего используется инструкция include.
  •  Как с помощью этой инструкции можно разбивать PHP сайт на блоки.
  •  Как инструкция include позволяет автоматизировать редактирование сайта.
  •  Как выносить данные за пределы файла.
  •  Как применяется инструкция include в сайтах.

Рис. 143.  Схема включения Include.

Инструкция Include позволяет  вынести часть кода в отдельный файл (его иногда называют установочным файлом), а затем в теле программы указывать только имя установочного файла.

Для ознакомления с инструкцией создадим тренировочный файл с именем Include.php (рис. 144), (используя технологию рассмотренную ранее см. рис. 11-12) или скопируем текст из этого файла (содержимое которого Вы читаете) в файл по адресу    .

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

<title>Инструкция include</title>

</head>

<body>

<?php

 $a = 10;

 $b = 15;

 $c = $a+$b;

 echo "Сумма переменных (используя инструкцию include)- $c";

?>

</body>

</html>

Рис. 144. Исходное состояние файла Include.php 

Если запустить (рис. 145) данный файл на исполнение, то получим:

Рис. 145. Результат исполнения файла Include.php.

Далее создадим файл следующего состава рис.146 (отметьте, что он содержит только PHP блок).

Рис. 146. Cостав файла C:\WebServers\home\localhost\www\php\Includeset.php

Файл,  показанный на рис. 144 приведем к виду (рис. 147) и запустив его получим результат (рис. 148).

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

<title>Инструкция include</title>

</head>

<body>

<?php

include "includeset.php";//указывается путь,где файл хранится

//$a = 10;

//$b = 15;

$c = $a+$b;

//echo "Сумма переменных (без инструкции include)- $c";

echo "Сумма переменных (используя инструкцию include)- $c";

?>

</body>

</html>

Рис. 147. Модифицированный состав файла Include.php.

Рис. 148. Результат работы модифицированного состава файла Include.php.

Основы работы с базой данных. МуSQL (см. Лекцию  “Основы работы с базой данных ”).

1192 1867 7046 7164 5584 8100

PAGE  3


 

А также другие работы, которые могут Вас заинтересовать

21333. Общее представление об информационной системе 3.9 MB
  Информационные системы обеспечивают сбор хранение обработку поиск и выдачу информации необходимой в процессе принятия решений в любой области. Информационная система ИС взаимосвязанная совокупность средств методов и персонала используемая для хранения обработки и выдачи информации в интересах достижения поставленной цели. Современное понимание ИС предполагает использование компьютера в качестве основного технического средства переработки информации. Они становятся стратегическим источником информации и используются на всех уровнях...
21334. Основные понятия, терминология и классификация 185 KB
  Опираясь на рассмотренное содержание понятия технология можно сформулировать следующее определение понятия информационная технология: Информационная технология это совокупность средств и методов их применения для целенаправленного изменения свойств информации определяемого содержанием решаемой задачи или проблемы Информационная технология ИТ это совокупность методов производственных и программнотехнических средств объединенных в технологическую цепочку обеспечивающую сбор хранение обработку вывод и распространение...
21335. Основы построения системы стандартов ИТ 1.41 MB
  Единое информационное пространство складывается из следующих основных составляющих: информационные ресурсы содержащие данные сведения информацию и знания собранные структурированные по некоторым правилам подготовленные для доставки заинтересованному пользователю защищенные и архивированные на соответствующих носителях; организационные структуры обеспечивающие функционирование и развитие единого информационного пространства: поиск сбор обработку хранение защиту и передачу информации; средства информационного взаимодействия в том...
21336. Безопасность информационных систем 165 KB
  Действительно вопросы хищения информации ее сознательного искажения и уничтожения часто приводят к трагическим для пострадавшей стороны последствиям ведущим к разорению и банкротству фирм к человеческим жертвам наконец. А тысячи коммерческих компьютерных преступлений приводящих к потерям сотен миллионов долларов а моральные потери связанные с хищением конфиденциальной информации. Перечень бед от нарушения безопасности информации можно было бы продолжать бесконечно если раньше для успешного совершения революции или переворота важно было...
21338. Понятие и виды гидросферы. Важнейшие свойства природных вод 201 KB
  Нижняя граница гидросферы принимается на уровне поверхности мантии (поверхности Махоровичича), а верхняя проходит в верхних слоях атмосферы. Гидросфера включает в себя Мировой океан, воды суши – реки, озера, болота, ледники – атмосферную влагу, а также подземные воды, залегающие всюду на материках
21340. ОБЛІК ДОВГОСТРОКОВИХ ЗОБОВ’ЯЗАНЬ 96.5 KB
  Для фінансування довгострокових проектів, розширення виробничої діяльності компанії можуть випускати акції або довгострокові облігації (Bonds). При цьому перевага надається саме облігаціям.
21341. Структура базовой информационной технологии и алгоритм решения 513.5 KB
  Структура базовой информационной технологии и алгоритм решения Концептуальный уровень описания содержательный аспект Так как средства и методы обработки данных могут иметь разное значение то различают глобальную базовую и специальную конкретную информационные технологии1. Специальные конкретные ИТ задают обработку данных в определенных типах задач пользователей. Следующие за процессом Получение информационные процессы уже производят преобразование данных. Процесс обработки данных включает .