PHP - методы GET и POST
Клиент браузера может отправлять информацию на веб-сервер двумя способами.
- Метод GET
- Метод POST
Прежде чем браузер отправит информацию, он кодирует ее, используя схему, называемую кодированием URL. В этой схеме пары имя / значение объединяются знаками равенства, а разные пары разделяются амперсандом.
name1=value1&name2=value2&name3=value3
Пробелы удаляются и заменяются символом +, а любые другие не буквенно-цифровые символы заменяются шестнадцатеричными значениями. После того, как информация закодирована, она отправляется на сервер.
Метод GET
Метод GET отправляет закодированную информацию о пользователе, добавленную к запросу страницы. Страница и закодированная информация разделены? персонаж.
http://www.test.com/index.htm?name1=value1&name2=value2
Метод GET создает длинную строку, которая появляется в журналах вашего сервера в поле браузера Location :.
Метод GET может отправлять только до 1024 символов.
Никогда не используйте метод GET, если у вас есть пароль или другая конфиденциальная информация для отправки на сервер.
GET нельзя использовать для отправки на сервер двоичных данных, таких как изображения или текстовые документы.
Доступ к данным, отправленным методом GET, можно получить с помощью переменной среды QUERY_STRING.
PHP предоставляет $_GET ассоциативный массив для доступа ко всей отправленной информации с помощью метода GET.
Попробуйте следующий пример, поместив исходный код в скрипт test.php.
<?php
if( $_GET["name"] || $_GET["age"] ) {
echo "Welcome ". $_GET['name']. "<br />";
echo "You are ". $_GET['age']. " years old.";
exit();
}
?>
<html>
<body>
<form action = "<?php $_PHP_SELF ?>" method = "GET">
Name: <input type = "text" name = "name" />
Age: <input type = "text" name = "age" />
<input type = "submit" />
</form>
</body>
</html>
Это даст следующий результат -
Метод POST
Метод POST передает информацию через заголовки HTTP. Информация кодируется, как описано в случае метода GET, и помещается в заголовок QUERY_STRING.
Метод POST не имеет ограничений на размер отправляемых данных.
Метод POST можно использовать для отправки как ASCII, так и двоичных данных.
Данные, отправленные методом POST, проходят через заголовок HTTP, поэтому безопасность зависит от протокола HTTP. Используя Secure HTTP, вы можете быть уверены, что ваша информация в безопасности.
PHP предоставляет $_POST ассоциативный массив для доступа ко всей отправленной информации с помощью метода POST.
Попробуйте следующий пример, поместив исходный код в скрипт test.php.
<?php
if( $_POST["name"] || $_POST["age"] ) {
if (preg_match("/[^A-Za-z'-]/",$_POST['name'] )) {
die ("invalid name and name should be alpha");
}
echo "Welcome ". $_POST['name']. "<br />";
echo "You are ". $_POST['age']. " years old.";
exit();
}
?>
<html>
<body>
<form action = "<?php $_PHP_SELF ?>" method = "POST">
Name: <input type = "text" name = "name" />
Age: <input type = "text" name = "age" />
<input type = "submit" />
</form>
</body>
</html>
Это даст следующий результат -
Переменная $ _REQUEST
Переменная PHP $ _REQUEST содержит содержимое $ _GET, $ _POST и $ _COOKIE. Мы обсудим переменную $ _COOKIE, когда расскажем о файлах cookie.
Переменная PHP $ _REQUEST может использоваться для получения результата из данных формы, отправленных с помощью методов GET и POST.
Попробуйте следующий пример, поместив исходный код в скрипт test.php.
<?php
if( $_REQUEST["name"] || $_REQUEST["age"] ) {
echo "Welcome ". $_REQUEST['name']. "<br />";
echo "You are ". $_REQUEST['age']. " years old.";
exit();
}
?>
<html>
<body>
<form action = "<?php $_PHP_SELF ?>" method = "POST">
Name: <input type = "text" name = "name" />
Age: <input type = "text" name = "age" />
<input type = "submit" />
</form>
</body>
</html>
Здесь переменная $ _PHP_SELF содержит имя собственного скрипта, в котором он вызывается.
Это даст следующий результат -