Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Java Модуль 3.docx
Скачиваний:
17
Добавлен:
01.07.2025
Размер:
12.88 Mб
Скачать

Обработка get-запроса вPhp

Когда мы создавали клиентскую часть нашего проекта на Java, то говорили о понятии GET-запроса. Именно при помощи GET-запроса мы отправляли данные на серверную частьPHP. В таком виде мы отправляли GET-запрос из Java:

?tov1=10&tov2=20&tov3=30&tov4=40&tov5=0&tov6=0&tov7=0&tov8=0&tov9=0&tov10=90&

Всего передаются десять параметров, значение каждого параметраэто количество поступившего товара. Это значит, что этот GET-запрос мы должны обработать изPHP. ДанныйGET-запрос изJava передавался по адресу http://puh/tovar.php.Вспомним программный кодJava, который мы писали для этих целей:

// Формируем GET-запрос для отправки

String str = "http://puh/tovar.php"+makeGet();

Страницу tovar.php мы уже добавили к нашему проекту, давайте перейдем на нее и запишем теги для написания PHPкода (см. рис. 5.23):

<?php

?>

Рис. 5.15

Весь дальнейший программный код на текущем занятии мы будем вводить в файле нашего проектаtovar.php!

Добавим одну строчкуPHP-кода:

<?php

echo "Привет! PHP";

?>

Команда echo выводит данные на страницу. Сохраним изменения в проекте,откроем браузер и в адресной строке введем:http://puh/tovar.php.Нажмем клавишу Enterи увидим результат(см. рис. 16):

Рис. 5.16

Все работает нормально,русские буквы отображаются правильно!

Обратите внимание, что на этот раз мы указали не только название сайта puh, но и имя конкретной страницы -http://puh/tovar.php. Для запуска любой страницы, кроме index.php нужно указывать явно имя страницы!

В дальнейшем, как и обычно, не будем закрывать окно браузера, а будем нажимать клавишу F5 для обновления результата.

Для обработки параметров, переданных через GET-запрос в PHP,существует специальный массив - $_GET.

Вспомним!!! Название любой переменной, в том числе и массива, в PHPначинается с символа доллара ($)!

Чтобы получить значение параметра GET-запроса по его имени достаточно в квадратных скобках массива указать имя параметра в кавычках: $_GET["tov1"].

Изменим наш PHP-код на следующий:

<?php

echo $_GET["tov1"];

?>

Теперь на страницу будет выводиться значение параметра с именем: tov1. Перейдем в браузер и в адресной строке введем: http://puh/tovar.php?tov1=17. Адрес страницы остался тем же, а после адреса добавился GET-запрос с одним параметром под именем tov1.Нажмем клавишуEnter увидим результат(см. рис. 5.17):

Рис. 5.17

Получилось следующее:код PHP обработал параметр из GET-запроса и его значение вывел на страницу. Таким образом,GET-запрос можно передать странице через ссылку в адресной строке браузера. Это один из способов передачи данных на веб-страницу. Мы уже программировали процесс передачи данных при создании клиентской части на языке Java.Результат и в том, и в другом случае получается одинаковым страница tovar.php получает данные и может их обработать.

При открытииPHP-страницы, ее программный код, записанный внутри тегов <?php ?> начинает выполняться как обычная программа!

Напомним, что язык программирования PHP имеет такой же синтаксис, как иJava. Однако,между ними имеются определенные отличия.некоторые из них мы рассмотрели на самом первом занятии.

Рассмотрим еще одно отличие сложение строк (конкатенация) обозначается в PHPсимволомточка(.). В Javaдля этого применяется символплюс(+). Ниже приведены примеры сложения строк в Javaи PHP:

//Сложение строк в PHP

$str = "Hello! "."PHP";

//Сложение строк в Java

String str = "Hello! "+"Java";

Из клиентской части нам передается GET-запрос. Прежде чем обработать эти данные, необходимо проверить его формат и убедиться, что имеются параметры с названием "tov.." и наличием хотя бы одного значения,отличного от нуля. Когда передаются все нулевые значения нам не нужно обрабатывать такой запрос!

Удалим нашу проверочную строку:

<?php

echo $_GET["tov1"];

?>

А вместо нее запишем кодPHP для проверки:

<?php

// Если есть данные вGET-запросе

if ($_GET)

{

// ВЫПОЛНЯЕМ ПРОВЕРКУ ФОРМАТА GET-ЗАПРОСА

// Флаг проверки данных в GET-запросе

$flag = false;

// Цикл, выполняющий десять шагов

for ($i=1;$i<=10;$i++)

{

// Переменная для имени параметра

$tmp = "tov".$i;

// Если такой параметр передан в GET-запросе

if ($_GET[$tmp])

{

// Меняем значение флага

$flag=true;

// Прерываем цикл

break;

}

}

// Если формат GET-запроса оказался верным

if ($flag)

{

echo "Формат верный!";

}

}

?>

Конструкция:

if ($_GET)

вернет значение true, если массив $_GET содержит данные,т.е. имеются параметры GET-запроса.

Переменной flag изначально присваивается значение falseи меняется на true, если найден хотя бы один параметр в GET-запросе с названием на tov и значением отличным от нуля. В этом случае мы выводим проверочную фразу: "Формат верный".

Цикл for выполняет десять шагов, значения переменной $iизменяется от 1 до 10, т.к. это связано с тем, что наши параметры имеют имена: tov1, tov2, … , tov10.

Переменная $tmpна каждом шаге цикла будет принимать значения: tov1, tov2, … , tov10 в результате сложения строк. Далее значение переменной $tmp будет подставляться в конструкциюif ($_GET[$tmp]). Это равносильно записи: $_GET["tov1"],…, $_GET["tov10"]. Конструкция:if ($_GET[$tmp]) вернет значение trueв том случае, если параметр с таким именем действительно имеется в GET-запросе и имеет ненулевое значение.

Если находим хотя бы одно такое значение меняем значение переменной- flag, и прерываем цикл.

Перейдем в браузер и введем в адресной строке следующее:

http://puh/tovar.php?name=Вася&famil=Петров

Нажмем клавишу Enter –на странице ничего не появилось (см. рис.5.18):

Рис. 5.18

Это означает, что данныйGET-запрос не прошел проверку! И это правильно, потому что данный GET-запрос содержит совершенно другие параметры: name иfamil.

Теперь введем правильный GET-запрос в адресную строку браузера:http://puh/tovar.php?tov1=100&tov2=200.

Нажимаем Enter и видим, что на странице появилось сообщение:Формат верный! Наша проверка работает правильно.

Мы не проверяем количество переданных параметров, так как из клиентской части на Javaмы всегда отправляем именно десять параметров.

Изучая язык программирования Java, мы знакомились с понятием метода класса. ВPHP тоже можно создавать классы, но в отличие от Java, в PHPметод может находиться вне класса, т.е. без класса. Такой метод называется функцией. Принцип работы функции такой же, как и у метода. При вызове функциивыполняется программный код,расположенный внутри фигурных скобокфункции. Записьфункции начинается со служебного словаfunction. Например:

function func()

{

}

В данном случае имя функции: func.

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

function runMySQL()

{

echo "Формат верный!";

}

Внимание!!!Подсветка кода для PHP работает по тем же принципам, как и в Java! Комбинация клавиш вызывает вспомогательное окно подсветки программного кода.

На то место, где был вывод сообщения вставим вызов функции:

// Если формат GET-запроса оказался верным

if ($flag)

{

runMySQL();

}

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

Функция runMySQL() будетвыполнять запись данных в базу MySQLи возвращать ответ клиентской части на Java в виде остатков товаров, в формате:

10~20~30~40~50~60~70~80~90~100

Это и есть данные,которые мы получали из Java, а потом выводили в таблицу, в колонку остатков товаров. Вывод сообщения о правильном формате удалим:

function runMySQL()

{

}

Это было временное сообщение на момент проверки.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]