PHP - metody GET & POST

Istnieją dwa sposoby, w jakie klient przeglądarki może wysyłać informacje do serwera WWW.

  • Metoda GET
  • Metoda POST

Zanim przeglądarka wyśle ​​informacje, koduje je przy użyciu schematu zwanego kodowaniem adresu URL. W tym schemacie pary nazwa / wartość są łączone znakami równości, a różne pary są oddzielane znakiem ampersand.

name1=value1&name2=value2&name3=value3

Spacje są usuwane i zastępowane znakiem +, a wszelkie inne znaki niealfanumeryczne są zastępowane wartościami szesnastkowymi. Po zakodowaniu informacje są wysyłane na serwer.

Metoda GET

Metoda GET wysyła zakodowane informacje o użytkowniku dołączone do żądania strony. Strona i zakodowane informacje są oddzielone znakiem? postać.

http://www.test.com/index.htm?name1=value1&name2=value2
  • Metoda GET tworzy długi ciąg, który pojawia się w dziennikach serwera w polu Lokalizacja: przeglądarki.

  • Metoda GET jest ograniczona do wysyłania tylko do 1024 znaków.

  • Nigdy nie używaj metody GET, jeśli masz hasło lub inne poufne informacje do wysłania na serwer.

  • GET nie może służyć do wysyłania danych binarnych, takich jak obrazy lub dokumenty tekstowe, na serwer.

  • Dostęp do danych przesłanych metodą GET można uzyskać za pomocą zmiennej środowiskowej QUERY_STRING.

  • PHP zapewnia $_GET tablica asocjacyjna, aby uzyskać dostęp do wszystkich wysłanych informacji za pomocą metody GET.

Wypróbuj następujący przykład, umieszczając kod źródłowy w skrypcie 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>

To da następujący wynik -

Metoda POST

Metoda POST przesyła informacje za pośrednictwem nagłówków HTTP. Informacje są kodowane zgodnie z opisem w przypadku metody GET i umieszczane w nagłówku o nazwie QUERY_STRING.

  • Metoda POST nie ma żadnych ograniczeń co do wielkości przesyłanych danych.

  • Metodę POST można wykorzystać do przesyłania danych ASCII oraz danych binarnych.

  • Dane przesyłane metodą POST przechodzą przez nagłówek HTTP, więc bezpieczeństwo zależy od protokołu HTTP. Korzystając z bezpiecznego protokołu HTTP, możesz upewnić się, że Twoje informacje są bezpieczne.

  • PHP zapewnia $_POST tablica asocjacyjna, aby uzyskać dostęp do wszystkich wysłanych informacji metodą POST.

Wypróbuj następujący przykład, umieszczając kod źródłowy w skrypcie 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>

To da następujący wynik -

Zmienna $ _REQUEST

PHP $_REQUEST variable contains the contents of both $_DOSTAĆ, $_POST, and $_CIASTKO. Omówimy zmienną $ _COOKIE, gdy wyjaśnimy o plikach cookie.

Zmienna PHP $ _REQUEST może służyć do uzyskania wyniku z danych formularza przesłanych zarówno metodą GET, jak i POST.

Wypróbuj następujący przykład, umieszczając kod źródłowy w skrypcie 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>

Tutaj zmienna $ _PHP_SELF zawiera nazwę skryptu własnego, w którym jest wywoływana.

To da następujący wynik -