PHP

Server-side form validation

by Andrea Spera

La server-side form validation è il processo in cui i dati inviati da un form web vengono verificati sul server per garantirne l'integrità e la sicurezza. Questo controllo avviene dopo l'invio dei dati, assicurando che siano corretti, completi e conformi ai requisiti (es. formati, lunghezze, valori consentiti) prima di essere processati o salvati nel database.
La classe Database, usata in questi esempi, è definita qui: Collegarsi a un database con mysqli
Nel seguente esempio effettueremo diversi controlli su quattro campi di un form.
Campo Controlli
User name
  • La stringa non è vuota
  • La stringa non contiene virgolette o parentesi angolate
  • La user name non è già stata utilizzata
Password
  • La stringa non è vuota
  • La stringa non contiene virgolette o parentesi angolate
  • Lunghezza minima 6 caratteri
Pin
  • La stringa non è vuota
  • È un numero intero positivo
Email
  • La stringa non è vuota
  • Il formato è quello di una email
Codice
<?php
function check($myVar)
	{
	if($myVar == "")
		{
		return "Campo obbligatorio.";
		}
	mysqli_set_charset(Database::$conn, "utf8");
	$safe = htmlspecialchars($myVar);
	$safe = mysqli_real_escape_string(Database::$conn, $safe);
	if(strcmp($myVar,$safe)!=0)
		{//basic sql injection prevention
		return "Sono stati utilizzati caratteri non validi";
		}
	return "ok";
	}
function check_user($myVar)
	{
	$check=check($myVar);
	if($check!="ok")
		{
		return $check;
		}
	$query = mysqli_query(Database::$conn,"
		SELECT *
		FROM validation_test
		WHERE user='".$myVar."'
		;");
	$countRow = mysqli_num_rows($query);
	if($countRow != 0)
		{
		return "Nome utente già utilizzato";
		}
	return "Validazione superata";
	}
function check_psw($myVar)
	{
	$check=check($myVar);
	if($check!="ok")
		{
		return $check;
		}
	if(strlen($myVar)<6)
		{
		return "Inserire almeno 6 caratteri";
		}
	return "Validazione superata";
	}
function check_pin($myVar)
	{
	$check=check($myVar);
	if($check!="ok")
		{
		return $check;
		}
	if(filter_var($myVar, FILTER_VALIDATE_INT, array("options" => array("min_range" => 0))) === false)
		{
		return "Inserire un numero intero positivo";
		}
	return "Validazione superata";
	}
function check_email($myVar)
	{
	$check=check($myVar);
	if($check!="ok")
		{
		return $check;
		}
	if(filter_var($myVar, FILTER_VALIDATE_EMAIL) === false)
		{
		return "Formato non valido";
		}
	return "Validazione superata";
	}
?>
Validare e correggere un URL
Questa funzione è utile per convalidare o correggere un URL utilizzando i filtri di PHP.
Codice
function validate_url($myUrl)
{
    if (filter_var($myUrl, FILTER_VALIDATE_URL)) {
        return $myUrl . ' is a valid URL';
    } else {
        return $myUrl . ' is not a valid URL';
    }
}

echo validate_url('https://www.bluesite.it/lozibaldoneinformatico');
Output
https://www.bluesite.it/lozibaldoneinformatico is a valid URL