Pagine parametrizzate via post http

Vediamo come gestire dati passati ad una pagina PHP via POST HTTP.

Per prima cosa scriviamo una paginetta html con un form che fa una post di un paio di variabili verso un'altra pagina, la nostra pagina php che li gestirà.

Notiamo pigiando il bottone "chiedi" il controllo verrà passato alla pagina response.php con i valori dei due campi di input name e question come specificati dall'utente.
<form action="response.php" method="post">
<p>
Il tuo nome:<br /><input type="text" name="name" /><br />
La tua domanda:<br /><input type="text" name="question" />?
</p>
<input type="submit" value="chiedi" />
</form>
Vediamo ora il codice PHP che caratterizza la response.php.

Per prima cosa facciamo un controllo su le variabili passate alla pagina, via POST HTTP, ovvero, controlliamo che l'array associativo $_POST[] sia definito e contenga le due variabili name e question che ci aspettiamo.

Se qualcosa va storto con $_POST[], ovvero probabilmente la pagina del responso é stata chiamata direttamente e non dalla pagina che abbiamo scritto sopra per generare il quesito secondo la nostra impostazione, diciamo all'utente che non abbiamo capito cosa vuole.

Nel caso contrario verifichiamo che le due variabile postate non siano vuote. Se lo sono, immettiamo un valore di default.

Mostriamo all'utente a cosa stiamo per rispondere, e quindi passiamo al cuore del nostro meccanismo per la generazione dell'oracolo: la funzione rand() che genera un valore intero nell'intervallo passato, nel nostro caso, zero o uno. A seconda del risultato visualizziamo un Sì o un No.
if($_POST && isset($_POST["name"]) && isset($_POST["question"]))
{
$name = $_POST["name"];
if(strlen($name) == 0)
$name = "Anonimo";

$question = $_POST["question"];
if(strlen($question) == 0)
$question = "É uscito testa";

echo $name, ", mi hai chiesto: ", $question, "?<br />";
echo "<p>La mia risposta é: ";
echo (rand(0,1) == 0) ? "<b>Sì</b></p>" : "<b>No</b></p>";
}
else
{
echo "<p>Non ho capito la tua domanda.</p>";
}
Come tocco finale, mettiamo un link alla pagina con la domanda, in modo da permettere al nostro utente di fare una nuova domanda:
<a href=".">Clicca qui per fare un'altra domanda</a>.
E questo é tutto.

Si può vedere il codice in azione in queste pagine: qui la generazione della domanda, qui la generazione della risposta.

Nessun commento:

Posta un commento