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 содержит имя собственного скрипта, в котором он вызывается.

Это даст следующий результат -