Originariamente inviato da Virus_101
Io intanto non farei cosi'.
io farei :
1- Imposta la tabella utenti con login(univoco) e pwd.
2- A tempo di login query sul campo login
3- Se la query mi risponde il risultato deve essere 1 tupla altrimenti errore
4- passo a md4 la pwd inserita dall'utente
5- controllo la pwd del db con quella passata ad md5 al punto 4
6- se coincidono accedi altrimenti esci.
Perche' complicarsi la vita? Basta una query:
Codice PHP:
<?php
require_once 'connessione.php';
if ( !isset($_POST['user']) OR !isset($_POST['pass']) ) {
// messaggio di errore per campi non compilati
}
$user = mysql_real_escape_string(stripslashes($_POST['user']));
$pass = mysql_real_escape_string(stripslashes($_POST['pass']));
$sql = "SELECT * FROM tabella_utenti
WHERE user = '$user'
AND pass = MD5('$pass')";
$result = mysql_query($sql);
if ( mysql_num_rows($result) ) {
// login OK
} else {
// login errato
}
ovviamente nome della tabella e dei campi sono solo indicativi.
Originariamente inviato da Virus_101
Si fa cosi' perche mdh soffre di collisioni e 2 pwd diverse hanno una probabilita, molto bassa ma c'e', di risultate uguali.
Il problema non sono le collisioni casuali, ma il fatto che un campo password non e' unico, visto che due persone possono scegliere la stessa password.
Originariamente inviato da Virus_101
Poi la query viene eseguita sul nome utente che e' unico e se non trovo solo 1 riga gia' trovo il primo errore.
Non c'e' motivo per non controllare sia user che pass nella stessa query
Originariamente inviato da Virus_101
Poi le pwd le controllo da codice evitando injections e altro.
Se puoi (e devi) rendere sicuro l'user perche' non farlo anche con la password?