PHP: Form invio e ricezione dati, uno degli aspetti fondamentali dell ‘architettura client-server.
Per fare un ripasso della sintassi del linguaggio ti consiglio la seguente lezione: PHP : Le istruzioni base
In questa lezione imparerai:
- Inviare dati da un form HTML ad uno script PHP
- Creare dei form che rispondono alle specifiche di una base dati
- Validazione build-in HTML 5
- Sanificazione stringhe in PHP
- Link utili
Inviare dati da un form HTML ad uno script PHP
Il nostro form HTML può essere hostato sul nostro server, su un altro server o eseguito in locale su una macchina con accesso al web.
Il nostro script deve essere hostato su un server web.
<form action="scripts/signup.php" method="post">
<input type="text" name="username"/>
<input type="password" name="password"/>
<input type="submit"/>
</form>
Nota: l’url specificato nell’attributo action del tag può essere interno al nostro server web (come in questo caso) o esterno al nostro server web in quel caso sarà simile a :
action="http://otherserver.com/signup.php"
Un semplice script PHP che visualizza i dati e quindi ti aiuta a confermare la correttezza del setup e la ricezione delle giuste informazioni:
<?php
$username=$_POST['username'];
$password=$_POST['password'];
echo "USERNAME: ".$username."<br/>";
echo "PASSWORD: ". $password;
?>


Creare dei form che rispondono alle specifiche di una base dati
Un buon sviluppatore sa bene che la costruzione di una web application dipende fortemente dalla progettazione del database con il quale scambierà dati.
Un esempio: abbiamo le specifiche di una tabella del database che rappresenta gli utenti e noi dobbiamo realizzare un form per inviare i dati in modo che siano conformi a quelli della tabella

Otteniamo le seguenti informazioni:
- i campi non possono essere vuoti (NOT NULL)
- non dovremo gestire l’id che sarà gestito direttamente dal DBMS
- l’email deve essere lunga al massimo 60 caratteri
- la lunghezza della password nel DB non rappresenta quella inserita dall’utente ma la dimensione dopo averla crittografata
- stabiliamo con il resto del team che la password deve contenere almeno un numero, una lettera maiuscola, una minuscola e almeno 8 caratteri
Puoi passare ora a scrivere il form
<form>
<input type="email" name="email" maxlength="60" placeholder="E-Mail"/>
<input type="password" name="password" minlength="8" placeholder="Password"/>
<input type="submit"/>
</form>
l’attributo minlength ti permette di stabilire un numero minimo di caratteri, maxlength un numero massimo di caratteri (non permettendo di inserirne altri nella casella di input).

Validazione build-in HTML 5
- required: specifica se un campo modulo deve essere compilato prima che il modulo possa essere inviato.
- minlength e maxlength: specifica la lunghezza minima e massima dei dati testuali (stringhe).
- min e max: specifica i valori minimo e massimo dei tipi di input numerici.
- type: specifica se i dati devono essere un numero, un indirizzo e-mail o un altro tipo di preimpostazione specifico.
- pattern: specifica un’espressione regolare che definisce un modello che i dati immessi devono seguire.
Modifica il form precedente:
<form>
<input type="email" name="username" maxlength="60" placeholder="E-Mail" required/>
<input type="password" name="password" minlength="8" placeholder="Password" pattern="(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}" required/>
<input type="submit"/>
</form>


Sanificazione stringhe in PHP
Sanificare le stringhe in PHP permette di rimuovere qualsiasi carattere illegale dai dati di input e anche di determinare se questi dati di input sono nella forma corretta.
Per sanificare un dato di tipo email :
<?php
$email=$_POST['email'];
$email_filterd = filter_var($email, FILTER_SANITIZE_EMAIL);
echo $email_filtered;
?>
Per sanificare i campi di tipo stringa puoi creare una funzione :
function sanitizeString($data){
$data = trim($data); //rimuove gli spazi prima e dopo la stringa
$data = stripslashes($data); // rimuove gli slashes
$data=(filter_var($data, FILTER_SANITIZE_STRING));
return $data;
}
Bisogna ricordare che queste sono solo le basi per iniziare a validare e a controllare i dati di un form.