Perche' complicarsi la vita? Basta una query: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.
ovviamente nome della tabella e dei campi sono solo indicativi.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
}
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
Si fa cosi' perche mdh soffre di collisioni e 2 pwd diverse hanno una probabilita, molto bassa ma c'e', di risultate uguali.
Non c'e' motivo per non controllare sia user che pass nella stessa queryOriginariamente 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.
Se puoi (e devi) rendere sicuro l'user perche' non farlo anche con la password?Originariamente inviato da Virus_101
Poi le pwd le controllo da codice evitando injections e altro.

Rispondi quotando