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 -