Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Экзамен / web / example1 / Введение в PHP.doc
Скачиваний:
101
Добавлен:
18.05.2015
Размер:
3 Mб
Скачать

Передача значений переменных по методу get

При использовании метода GET все данные упаковываются в адресную строку. Причем происходит это следующим образом: вначале имена переменных и их значения преобразуются в вид, безопасный для передачи в строке URL . После этого все данные собираются в одну строку к виду name=value, отделяясь друг от друга знаком & (амперсанд). Происходит это таким образом:

http://site.domain/action.php?имя=значение&имя=значение

Пары "имя=значение" создаются для каждого элемента ввода и попадают скрипту, который должен извлечь из строки названия переменных и их значения. В отличие от других языков программирования, PHP делает всю работу по расшифровке строки запроса, переданной методом GET, на себя и предоставляет уже готовые для использования в скрипте переменные. Причем имя переменной образуется из имени, указанного в соответствующем элементе формы. Если пользователь ввел в строке $name запроса имени "Беб", то в скрипте автоматически появится переменная $name, которая будет иметь значение "Беб".

Строка запроса может содержать не более 254 символов. Это одно из ограничений метода GET, которое не позволяет передавать объемные данные. Все данные, передаваемые этим способом, общедоступны и могут быть прочитаны кем угодно. Поэтому им не рекомендуется пользоваться для передачи секретной информации - например паролей.

Еще один способ состоит в передаче данных по методу GET через строку URL вида:

<a href='pr421.php?a=1&b=2&c=3'>. Рассмотрим пример:

<!—pr421.php -->

<html>

<head> </head>

<body>

<?php //

$a =$_GET['a'];

$b =$_GET['b'];

$c++;//Если режим on включен. Следует сначала написать $с =$_GET['с'];

echo "a=$a,b=$b"; //

print "<br>c=$c";//

echo "<br><a href='pr421.php?a=1&b=2&c=3'>новая передача</a>"

?>

</body>

</html>

Получим после запуска вида:

http://localhost/MyPrimers/pr421.php?a=10&b=20&c=30

a=10,b=20

c=31 новая передача

Если нажмем на гиперссылку новая передача, получим

a=1,b=2

c=4 новая передача

Ниже рассмотрен еще один пример передачи данных из клиентской формы на сервер по методу get

<html><head>

<title>Simpleform.html </title>

</head>

<body>

<form action="form.php" method="GET">

Имя:<input type="text" name="fio"><p>

<input type="submit" value="GO"><p>

</form>

</body>

</html>

<?php //form.php

echo "Hello, $fio<br>";

foreach($_GET as $fio=>$value);

echo "$fio=$value<br>";

print_r ($_GET);

print_r ($_REQUEST);

?>

Результат:

Hello,valera fio=valera Array ( [fio] => valera ) Array ( [fio] => valera )

Передача данных на сервер по методу post

Главное отличие методов POST и GET заключается в способе передачи информации. В методе GET параметры передаются через адресную строку, по сути в HTTP-заголовке запроса. В методе POST параметры передаются через тело HTTP-запроса и не отражаются в адресной строке. Метод POST, в отличие от GET, передает все данные на стандартный вывод. Соответственно, и ограничений на длину информации нет.

Какой из этих методов лучше? Для передачи информации, вводимой в форме, в большинстве случаев лучше подходит метод POST. А в случае динамических сайтов, когда показываемая страничка определяется не только адресом, но и переменными (интернет-магазин), может оказаться лучше использовать метод GET.

При исполнении скрипта на PHP создаются переменные с именами, соответствующими именам полей и содержащие соответствующие значения.

Предположим, что мы создали форму следующего вида:

<form action="multi.php" method="POST">

<input type="text" NAME="first" SIZE="4" MAXLENGTH="4">

< input type ="text" NAME="second" SIZE="4" MAXLENGTH="4">

< input type ="Submit" VALUE="Умножить">

</form>

Скрипт, содержащийся в файле multi.php может выглядеть следующим образом:

<?php

//$first=$_POST['first']; $second=$_POST['second'];

echo "$first умножить на $second получится ", $first*$second;

?>

Вывод:

5 умножить на 6 получится 30

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

PHP воспринимает массивы в контексте переменных формы. Можно группировать взаимосвязанные переменные вместе:

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

Имя: <input type="text" name="user[name]"><br>

E-mail: <input type="text" name="user[email]"><br>

Хобби: <br>

<select multiple name="hobbi[]">

<option value="книги">Книги

<option value="компьютер">Компьютер

<option value="музыка">Музыка

<option value="спорт">Спорт

</select>

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

</form>

Теперь создадим сам PHP-скрипт array.php, обрабатывающий эту форму:

<?php //array.php

/* выводим выбранные в форме переменные */

print "user[name]:$user[name]<BR>";

print "user[email]:$user[email]<BR>";

print "hobbi:$hobbi[0]";

?>

Вывод:

user[name]:rrrrrrrr

user[email]:yyyyyyyyyy

hobbi:спорт

В результате обработки этой формы PHP создаст ассоциативный массив user[] с элементами $user[name] и $user[email], и массив hobbi[] с элементами $hobbi[0], $hobbi[1], $hobbi[2], $hobbi[3]. Пользователь имеет возможность сделать множественный выбор, т.е. указать в качестве выбора hobbi[0]: книги, компьютер, музыка, спорт.

Соседние файлы в папке example1