PHP - Metodi GET & POST

Esistono due modi in cui il client browser può inviare informazioni al server web.

  • Il metodo GET
  • Il metodo POST

Prima che il browser invii le informazioni, le codifica utilizzando uno schema chiamato codifica URL. In questo schema, le coppie nome / valore sono unite con segni di uguale e coppie diverse sono separate dalla e commerciale.

name1=value1&name2=value2&name3=value3

Gli spazi vengono rimossi e sostituiti con il carattere + e qualsiasi altro carattere non alfanumerico viene sostituito con valori esadecimali. Dopo che le informazioni sono state codificate, vengono inviate al server.

Il metodo GET

Il metodo GET invia le informazioni utente codificate aggiunte alla richiesta della pagina. La pagina e le informazioni codificate sono separate dal? personaggio.

http://www.test.com/index.htm?name1=value1&name2=value2
  • Il metodo GET produce una lunga stringa che appare nei log del server, nella casella Posizione: del browser.

  • Il metodo GET è limitato a inviare solo fino a 1024 caratteri.

  • Non utilizzare mai il metodo GET se si dispone di password o altre informazioni sensibili da inviare al server.

  • GET non può essere utilizzato per inviare dati binari, come immagini o documenti word, al server.

  • È possibile accedere ai dati inviati dal metodo GET utilizzando la variabile d'ambiente QUERY_STRING.

  • Il PHP fornisce $_GET array associativo per accedere a tutte le informazioni inviate utilizzando il metodo GET.

Prova il seguente esempio inserendo il codice sorgente nello script 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>

Produrrà il seguente risultato:

Il metodo POST

Il metodo POST trasferisce le informazioni tramite intestazioni HTTP. Le informazioni sono codificate come descritto nel caso del metodo GET e inserite in un'intestazione chiamata QUERY_STRING.

  • Il metodo POST non ha alcuna restrizione sulla dimensione dei dati da inviare.

  • Il metodo POST può essere utilizzato per inviare dati ASCII e binari.

  • I dati inviati dal metodo POST passano attraverso l'intestazione HTTP, quindi la sicurezza dipende dal protocollo HTTP. Utilizzando Secure HTTP puoi assicurarti che le tue informazioni siano protette.

  • Il PHP fornisce $_POST array associativo per accedere a tutte le informazioni inviate utilizzando il metodo POST.

Prova il seguente esempio inserendo il codice sorgente nello script 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>

Produrrà il seguente risultato:

La variabile $ _REQUEST

La variabile PHP $ _REQUEST contiene il contenuto di $ _GET, $ _POST e $ _COOKIE. Discuteremo della variabile $ _COOKIE quando spiegheremo i cookie.

La variabile PHP $ _REQUEST può essere utilizzata per ottenere il risultato dai dati del modulo inviati con entrambi i metodi GET e POST.

Prova il seguente esempio inserendo il codice sorgente nello script 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>

Qui la variabile $ _PHP_SELF contiene il nome del self script in cui viene chiamata.

Produrrà il seguente risultato: