logo search
Vvedenie_v_Veb_programmirovanien_2 / Vvedenie_v_Veb_programmirovanien_2

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

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

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

Пары "имя=значение" создаются для каждого элемента ввода, для которого указано имя атрибутом NAME.

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

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

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

Рассмотрим пример передачи данных через строку URI:

<!—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 новая передача