Corsi on-line

Limitare un input alla lunghezza del campo del DB destinato ad ospitarlo

Una buona pratica nello sviluppo di applicazioni in PHP che elaborano dati inviati da form e li inviano alle tabelle di un database, è quella di non consentire la ricezione di parametri più lunghi di quelli previsti per i campi da popolare. Si pensi, per esempio, ad un campo “username” che possa accettare valori non più lunghi di 10 caratteri, in questo caso è meglio NON utilizzare una sintassi come questa:

$username = $_POST['username'];
mysql_query("INSERT INTO utenti (username) VALUES('" . $username . "')");

Meglio effettuare un controllo diretto sulla lunghezza del parametro di input grazie all’utilizzo della funzione strlen e stampare unerrore in caso di eccedenza:

if (strlen($_POST['username'] > 10)
{
  echo "Errore!";
}else{
  // scrivo nel database
  ...
}

oppure troncare il dato con substr():

$username = substr($_POST['username'],0,10);

Come è noto substr() accetta tre argomenti parametri: la stringa da cui estrarre una sottostringa, l’indice relativo alla posizione della stringa che parte dal primo carattere della sottostringa (“0”) e il numero di caratteri da estrarre (“10”), per cui nel caso specifico verranno utilizzati soltanto i primi 10 caratteri del parametro.

Come risaputo, i controlli lato server (come quelli esposti) sono molto più sicuri (e quindi preferibili) ai controlli lato client effettuati con javascript oppure attraverso l’attributo maxlength del campo input.

Post correlati
I più letti del mese
Tematiche