Ciao a tutti,
sto creando un sito che permette agli utenti di registrarsi con username e password.
Le informazioni di registrazione vengono salvate su un file dat sul server in questa forma: username|password.
La pagina che ho creato per il login, mi va a leggere le informazioni su questo file e quando trova la corrispondenza nome e pass per l'utente gli dovrebbe comunicare accesso effettuato.
Il controllo dell'inserimento valido dei campi nel form e il confronto con le informazioni salvate nel file lo effettuo così:
Codice PHP:
$name = $_POST['name'];
$password = $_POST['pass'];
$fp = file("log.dat"); // leggo il file
foreach ($fp as $line) {
$info = explode("|", $line); // il nome e la pass sono separati dalla barra
if ($name==$info[0] && $password==$info[1]) {
print "Login effetuato!
";
print "Benvenuto $name";
exit;
} else {
$errormessage = "Informazioni non valide!"; // verrà stampato se alla fine
} // del foreach non è mai stato
} // effettuato il login
// Altre istruzioni
Il problema risiede nella && che si trova all'interno della if.
Mi segnala sempre Errore, nonostante nomeutente e pass siano corretti (per verificare ho fatto anche stampare il contenuto di $info[0] e $info[1] e li prende dal file sempre correttamente.
Se sostituisco la && (o AND) con or, mi da login efffettuato solo se il nomeutente è corretto (cioè presente nel file), in quanto inserendo la pass giusta e un qualsiasi nome (evento che con la or dovrebbe darmi corretto) mi segnala errore.
Sembra che la password non la riesca a confrontare!!