Page 183 - Corso di PHP - Livello base
P. 183
$query = "SELECT * FROM autori WHERE Nickname = '{$_POST['nickname']}' AND
Password = '{$_POST['psw']}'";
$risultato = mysql_query($query);
if (mysql_num_rows($risultato) == '1')
{
echo "Benvenuto, utente autenticato";
// codice che mostra l'eventuale pagina personale dell'utente
}
else
{
echo "Spiacente, password errata";
}
Chiariamo subito la funzione nuova, mysql_num_rows:
restituisce il numero dei record trovati dalla query (nel
nostro caso uno, anche perché si suppone che gli username
siano univoci) e riceve come parametro il risultato della query.
Qua si trova la documentazione ufficiale della funzione:
http://php.net/manual/en/function.mysql-num-rows.php.
Pertanto se la funzione dà come risultato 1 (e quindi trova il
record), l'utente sarà loggato, in caso contrario ci sarà un
messaggio che informerà l'utente di aver inserito una
password errata.
Questo codice è estremamente vulnerabile, soprattutto nel
caso in cui l'impostazione magic quotes gpc di PHP sia
disattivata: in locale potete controllarlo su WAMP cliccando
sull'icona nella barra delle applicazioni, quindi andare alla voce
PHP e ancora andare su Impostazioni PHP. Se la voce “magic
quotes gpc” è spuntata significa che è attiva e avete maggiori
protezioni contro le SQL Injection. Ci sono però tanti
provider che non attivano le magic quotes sui loro server. Ma
cosa sono le magic quotes? Si tratta di un processo che
aggiunge in automatico i caratteri di escape alle stringhe, ma
dobbiamo sapere che a partire dalla versione 5.3.0 di PHP,
183