Dovresti dare piu' fiducia a mysql. Se fai una query di questo genere:
codice:
$querySQL= "SELECT * FROM utenti WHERE
'username' = '$username'
and
' password' = '$passwd' ";
con i nomi dei campi tra apici avrai sempre risultato zero righe. I nomi di campo non vanno tra apici.
La fiducia.... se la query trova la corrispondenza con username e password e' inutile che tu controlli la password con una if. Discutibile pure il controllo che fai
if (0 righe == 0 and $rows['password'] != $passwd) e' una ipotesi inverosimile.
se non hai righe come puoi controllare la password estratta dal db? ma se hai righe significa che la password e username erano esatti quindi falso lo zero righe. Quindi ipotesi che non si verificherebbe mai.
un esempio potrebbe essere:
Codice PHP:
//Impostiamo la query...
$querySQL= "SELECT * FROM utenti
WHERE username = '$username'
and
password = '$passwd' ";
//Eseguiamo la query
$result = mysql_query($querySQL)
OR die ("Errore nell'esecuzione della query:
".mysql_error());
//Controllo se la query è andata a buon fine
if(mysql_num_rows($result) == 1 ){
$_SESSION['username'] = $username;
$_SESSION['password'] = $passwd;
header("Location: riservata.php");
exit;
} else {
die ("Username e/o password errati
[url='login.php']Torna indietro[/url]");
}
mysql_close();
?>
occhio poi ad un altra cosa....
md5('69laotze');
e' ben diverso da
$password = '69laotze';
MD5('$password');
sempre per colpa delle maledette virgolette....