Trucchi per l'utilizzo del metodo POST con PHP

26/07/2006

Come ha scritto il mio amico Luca Ruggero in un suo bell'articolo, esistono fondamentalmente due metodi per utilizzare il metodo POST nella trasmissione dei dati tramite form: si creano due pagine, una contenente il modulo per l'invio e l'altra il codice che interpreterà i dati, oppure, si inserisce tutto il codice in una pagina che mostrerà dinamicamente o il form o l'output derivante dall'invio dei dati a seconda del comportamento richiesto.

Concettualmente, non è possibile ritenere uno dei due metodi citati come il migliore, ma in termini pratici utilizzare una sola pagina è preferibile: una sola pagina da creare, un solo codice da modificare in caso di aggiornamento, un solo documento da spedire sul server..

Form e codice su due pagine diverse

Vediamo ora come utilizzare POST su due pagine; ecco il codice del modulo che salveremo in una pagina chiamata "form.html":

<form method="POST" action="form.php">
Inserisci il tuo nome:
<input type="text" name="nome">
<input type="submit" name="invia" value="Invia">

</form>
Ed ecco il codice server side per l'elaborazione dei dati trasmessi da salvare nella pagina indicata nell'action del form:
<?
//controlliamo che sia stato inviato il parametro
if(isset($_POST['nome']))
{
  $nome = trim(stripslashes($_POST['nome']));
  if ($nome!=="")
  {
    echo $nome;
  }
  //notifica in caso di parametro vuoto
  else{
    echo "Non hai inserito il nome.";
  }

  //non si potrà accedere direttamente
  //alla pagina contenente il codice server side
}else{
  header("Location:form.html");
}
?>
Il codice proposto è molto semplice e i commenti aiutano a chiarire i vari passaggi, al lettore non rimane altro che eseguire un test su quanto proposto.

Form e codice in una sola pagina

Per creare una pagina contenente sia il modulo per la raccolta dei dati che il codice per la loro elaborazione, sfutteremo l'esistenza di un parametro, quello d'invio, che se assente permetterà al codice di visualizare il form, se presente consentirà invece di mostrare l'output desiderato:
<?
//controlliamo la presenza del parametro d'invio
if(isset($_POST['invia']))
{
  $submit = $_POST['invia'];
  $nome = trim(stripslashes($_POST['nome']));
  if ($nome!=="")
  {
    echo $nome;
  }else{
    echo "Non hai inserito il nome.";}
}else{
  //nel caso in cui manchi il parametro d'invio 
  //verrà visualizzato il form
?>
<form method="POST" action="form.php">
Inserisci un nome:
<input type="text" name="nome">

<input type="submit" name="invia" value="Invia">
</form>
<?
}
?>
Il listato proposto può essere implementato a piacere, per esempio anche in questo caso potremmo aggiungere un ulteriore controllo sull'invio del parametro "$_POST['nome']"; oppure protremmo effettuare un controllo sulla base di una querystring spedita tramite action come nell'esempio di Luca.

Attenzione: questo articolo è stato concesso in esclusiva per la pubblicazione a Mrwebmaster.it; ne è vietata la riproduzione,
anche parziale, senza l'esplicito consenso dell'autore e della redazione di Mrwebmaster.it.

© Claudiogarau.it :: Tutorials & Scripts, PHP, Linux and more.

Stampa :: Torna alla Home