СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Практическая работа. PHP. Работа с формами

Категория: Информатика

Нажмите, чтобы узнать подробности

Цель: научиться обрабатывать формы на Web-страницах с помощью сценариев на языке PHP.

Просмотр содержимого документа
«Практическая работа. PHP. Работа с формами»

ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ЛУГАНСКОЙ НАРОДНОЙ РЕСПУБЛИКИ

"КИРОВСКАЯ СРЕДНЯЯ ОБЩЕОБРАЗОВАТЕЛЬНАЯ ШКОЛА №3"














Практическая работа

урока информатики



Тема:PHP. Работа с формами















Составитель: учитель информатики II категории

Петров Денис Сергеевич








2017 г.

Цель: научиться обрабатывать формы на Web-страницах с помощью сценариев на языке PHP.

Задания для выполнения:

1. Реализовать на практике пример обработчика формы для ввода логина и пароля.

2. Разработать сценарий для вывода приветствия пользователя, который вводит свое имя с помощью формы. Для передачи данных использовать метод GET.

3. Разработать сценарий вычисления суммы, разности, произведения, частного и остатка для введенных двух чисел. Проверить его выполнения. Для передачи данных использовать метод POST.

4. Разработать сценарий для проведения тестирования (4-5 вопросов) и вывод результатов анкетирования пользователя.

Выполнение работы


Обработка запросов с помощью PHP

Внутри PHP-скрипта существует несколько способов получения доступа к данным, переданных клиентом по протоколу HTTP. До версии PHP 4.1.0 доступ к таким данным осуществлялся по именам переданных переменных. Таким образом, если, например, было передано first_name = Nina, то внутри скрипта появлялась переменная $ first_name со значением Nina. Если нужно было различать, каким методом были переданы данные, то использовались ассоциативные массивы

\ $ HTTP_POST_VARS и \ $ HTTP_GET_VARS, ключами которых были имена переданных переменных, а значениями - соответственно значения этих переменных. Таким образом, если пара first_name = Nina передана методом GET, то $HTTP_GET_VARS["first_name"]="Nina"".

Использовать в программе имена переданных переменных непосредственно опасно. Поэтому было решено начиная с PHP 4.1.0 задействовать для обращения к переменным, переданных с помощью HTTP-запросов, специальный массив - $ _REQUEST. Этот массив содержит данные, переданные методами POST и GET, а также с помощью HTTP cookies. Это глобальный ассоциативный массив, то есть его значений можно приобрести в любом месте программы, используя в качестве ключа имя соответственной переменной (элемента формы).

Пример

Рис. 11.2. Пример внешнего вида формы

Созданная форма для регистрации участников заочной школы программирования. Тогда в файле action.php, что обрабатывает эту форму, можно написать следующее:

".$_REQUEST["first_name"]. "

".$_REQUEST["last_name"]."!
";

$str .="Вы вибрали для изучения курс по ".

$_REQUEST["kurs"];

echo $str; ?

Тогда, если в форму мы ввели имя «Вася», фамилию «Петров» и выбрали среди всех курсов курс по PHP, на экране браузера получим следующее сообщение:

Здравствуйте, Вася Петров!

Вы выбрали для изучения курс по PHP

После введения массива $ _REQUEST массивы $ HTTP_POST_VARS и $ HTTP_GET_VARS для однородности были переименованы в $ _POST и $ _GET соответственно, но сами они из употребления не исчезли из соображений совместимости с предыдущими версиями PHP. В отличие от своих предшественников, массивы $ _POST и $ _GET стали суперглобальные, то есть доступными непосредственно и внутри функций и методов.

Приведем пример использования этих массивов. Допустим, нам нужно обработать форму, содержащую элементы ввода с именами first_name, last_name, kurs (например, форму, приведенную выше). Данные были переданы методом POST, и данные, передаваемые другими методами, мы обрабатывать не хотим. Это можно сделать следующим образом:

".$_POST ["first_name"]."

".$_POST ["last_name"] ."!
";

$str .= "Вы выбрали для изучения курс по ".

$_POST["kurs"];

echo $str; ?

Тогда на экране браузера, если мы ввели имя «Вася», фамилию «Петров» и выбрали среди всех курсов курс по PHP, увидим сообщение, как в предыдущем примере:

Здравствуйте, Вася Петров!

Вы выбрали для изучения курс по PHP


Для того, чтобы сохранить возможность обработки скриптов предыдущих версий, чем PHP 4.1.0, была введена директива register_globals, что разрешает или запрещает доступ к переменным непосредственно по их именам. Если в файле настроек PHP параметр register_globals = On, то к переменным, переданным сервера методами GET и POST, можно обращаться просто по их именам (можно писать $ first_name). Если же register_globals = Off, то нужно писать

$_REQUEST["first_name"]

або

$_POST["first_name"],

$_GET["first_name"],

$HTTP_POST_VARS["first_name"],

$HTTP_GET_VARS["first_name"].

С точки зрения безопасности эту директиву лучше отключать (register_globals = Off). При включенной директиве register_globals перечисленные выше массивы также будут содержать данные, переданные клиентом.

Иногда возникает необходимость узнать значение какой-либо переменной окружения, например метод, использовавшийся при передаче запроса или IP-адрес компьютера, отправившего запрос. Получить такую информацию можно с помощью функции getenv (). Она возвращает значение переменной окружения, имя которой передано ей в качестве параметра.


// возвратит использованный метод

echo getenv ("REMOTE_ADDR");

// выведет IP-адрес пользователя, который послал запрос

?

Как мы уже говорили, если используется метод GET, то данные передаются добавлением строка запроса в виде пар «имя_переменной = значение URL-адреса ресурса». Все, что записано в URL после знака, можно получить с помощью команды

getenv("QUERY_STRING");

Благодаря этому можно по методу GET передавать данные в каком-либо другом виде. Например, указывать только значения нескольких параметров через знак плюс, а в скрипте разбирать строку запроса на части или можно передавать значение всего одного параметра. В этом случае в массиве $ _GET появится пустой элемент с ключом, равным этому значению (всей строке запроса), причем символ «+», что встретился в строке запроса, будет заменен на подчеркивание «_».

Методом POST данные передаются только с помощью форм, и пользователь (клиент) не видит, какие именно данные отправляются серверу. Чтобы их увидеть, хакер должен подменить нашу форму своей. Тогда сервер отправит результаты обработки неправильной формы не туда, куда нужно. Чтобы этого избежать, можно проверять адрес страницы, с которой были посланы данные. Это можно сделать опять же с помощью функции getenv ():

getenv("HTTP_REFERER");


Пример обработки запроса с помощью PHP

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

Форма должна иметь следующий вид:




После ввода данных и нажатия кнопки «ОК» на странице должна появиться следующая информация:


В случае, когда форма и обработчик находятся в одном файле, код страницы будет следующим:


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












6




Скачать

Рекомендуем курсы ПК и ППК для учителей

Вебинар для учителей

Свидетельство об участии БЕСПЛАТНО!