Nella pagina di login come in tutte le pagine di questo tipo prendo i valori dal form così
Codice PHP:

$username = $mysqli->real_escape_string(trim($_POST['username']));
$password = $mysqli->real_escape_string(trim($_POST['password']));


li confronto con quelli nel db
Codice PHP:

if($result = $mysqli->query("SELECT user_id,username,password,password_crypt FROM utenti")){
//Se riesco a collegarmi con il database proseguo
while ($row = $result->fetch_assoc())

{
$db_username = $row['username'];
$db_password_crypt = $row['password_crypt'];
$db_id = $row['user_id'];
}
// Controllo se i dati inseriti corrispondono a quelli nel database
if (($db_password_crypt == $password_crypt) && ($db_username == $username)) {
$_SESSION['username'] = $username;
$_SESSION['user_id'] = $db_id;
//Se i dati coincidono loggo l'utente e gli do i benvenuto


la password la crypto e faccio un confronto con quella nel db.

Il problema è questo, i dati che utilizzo sono già inseriti nel db quindi ho la certezza che il login debba avvenire, il fatto è che nonostante inserisca l'username corretto lui mi restituisce un altro username, ed ovviamente login rifiutato! Cioè il var_dump() di username mi restituisce l'username che ho messo nel form, mentre il var_dump() dell'username prelevato dal db mi da un username diverso.
Mi sapreste dire se il codice che ho postato è corretto? Il db ha al momento 4 user, nel form inserisco l'user tizio e var_dump() mi restituisce l'user caio, almeno var_dump mi dice questo.

Qualcuno mi illumini:hammer::hammer::hammer:


Originariamente scritto da Paperino78 nel forum PHP in data 06-10-2015 21:33.