PROGRAMMIAMO
PHP - GET o POST?

GET

Nelle lezioni precedenti abbiamo considerato il passaggio di valori da un form a una pagina PHP. Ciò veniva realizzato indicando il nome della pagina php nell'attributo "action" del form:

<form method="get" action="elabora.php">

Il valore get dell'attributo method specifica invece il modo con cui i dati verranno inviati dal form alla pagina php. Il metodo get produce semplicemente (quando viene premuto il bottone submit) un'URL della pagina seguita da un punto interrogativo, a cui seguono a loro volta tutte le variabili inviate separate fra loro da una & (e commerciale). Per esempio:

http://www.auto.com/automobili.php?marca=fiat&modello=panda

La lunghezza massima della stringa di valori che segue il punto interrogativo non è limitata, ma non dovrebbe in generale superare i 255 caratteri (si tratta di una "raccomandazione", piuttosto che di un vero e proprio limite).

POST

Una soluzione alternativa possibile, per l'invio di dati da un form a una pagina php, è rappresentata dal method POST:

<form method="post" action="elabora.php">

Diversamente dal metodo GET, il metodo POST invia i dati in maniera non direttamente visibile per l'utente. In altre parole, i dati vengono inclusi all'interno del messaggio che il browser invia al server per la richiesta della pagina e non sono visualizzati all'interno dell'URL della pagina.

In altre parole, specificando method="post", quando si preme il tasto submit viene generata un'URL semplice, del tipo

http://www.auto.com/automobili.php

senza alcun parametro aggiuntivo. I dati vengono ugualmente inviati alla pagina PHP (esattamente come accadeva usando get), ma non sono più visibili nell'URL.

 

GET O POST ? Quando usare l'uno o l'altro metodo?

Il metodo POST consente di inviare una quantità maggiore di dati alla pagina PHP (circa 2 kB), non essendo limitato dalla lunghezza della stringa (come il metodo GET). Inoltre POST è un metodo più sicuro, quando si vogliono inviare alla pagina php informazioni riservate, come per esempio una password di accesso: infatti le informazioni riservate non vengono visualizzate nell'URL della pagina, ma rimangono nascoste all'interno del messaggio.

D'altra parte uno svantaggio del metodo POST è che i valori non possono essere memorizzati insieme all'URL della pagina. Ciò significa che non è in generale possibile usare i tasti Avanti e Indietro del browser per richiamare una pagina php di questo tipo e l'indirizzo della pagina stessa non può essere memorizzato nella cronologia o nei preferiti (segnalibri) del browser. Queste operazioni sono invece possibili se si usa il metodo GET, in quanto tutti i dati necessari a visualizzare la pagina php vengono memorizzati nella stringa di URL della pagina stessa.

Per quanto riguarda il recupero nella pagina php dei dati inviati, qualunque sia il metodo usato per l'invio (GET o POS) i dati possono essere importati usando sempre l'istruzione $_REQUEST. Per esempio:

<?php
$nome = $_REQUEST['nome'];
$cognome = $_REQUEST['cognome'];
$mail = $_REQUEST['mail'];
$messaggio = $_REQUEST['messaggio'];

...

In alternativa è possibile usare le istruzioni $_GET e $_POST che si usano esattamente allo stesso modo ma che funzionano solo quando l'invio è stato fatto usando il metodo corrispondente.

 

precedente - successiva

Sito realizzato in base al template offerto da
Graphixmania.it - Grafica e non solo
http://www.graphixmania.it