Codice PHP:
$sql= "INSERT INTO utenti(login, pass) VALUES('$login', '$pass')";
mysql_query($sql);
$query = "SELECT id FROM utenti WHERE login = '$login' AND pass = sha1('$pass')";
$result = mysql_query($query);
$pass è già stata criptata all'inizio, se lo fai una seconda volta, on coincide più!.
In generale, però, non è necessario rifare una query per controllare se è stato correttamente registrato: oltre che sprechi una query (su altervista son limitate, con le classi del database), è sufficiente controllare l'esito della prima mysql_query().
Per evitare sql_injection, dovresti filtrare TUTTI i dati provenienti dal form, dalla mysql_real_escape_string().
Per il tuo problema della password, puoi far così:
fai una query del tipo:
Codice PHP:
$query = "SELECT login, password FROM utenti WHERE login = '$login'";
Poi, se entra nell'if:
Codice PHP:
if (mysql_num_rows($result) > 0){ // SE TROVO UN UTENTE CON QUELL'USERNAME MI DICE CHE IN USO
fai un ulteriore if di controllo per la password: controlli che quella prelevata dal database sia uguale a quella passata dal form.
Poi, credo che prima di eseguire la query per immettere un nuovo utente, dovresti controllare se le due password coincidono:
Codice PHP:
else {
if($pass != sha1($pass2))
die('le due password non coincidono');
$sql= "INSERT INTO utenti(login, pass) VALUES('$login', '$pass')";
Ciao!