• User Attivo

    password criptata in phpmyadmin

    Buonasera giorgiani!!
    Ho un problema più unico che raro...
    Quando mi registro dal mio form tutto funziona ma quando faccio il login nn mi fa entrare!
    Ho aperto il mio database con phpmyadmin ed ero registrato, quindi ho provato ad inserire la password criptata (una serie di numeri e lettere) e mi fa entrare...

    Da cosa è dovuto e come posso sistemare?
    Ciao.


  • User Attivo

    up


  • ModSenior

    Ciao Marinski,
    devi avere un pò di pazienza ed attendere le risposte, poichè non è detto che il giorno stesso in cui apri una discussione trovi qualche utente in grado di aiutarti.
    Io leggendo il problema non ho comunque ben capito cosa significa che dopo sei riuscito ad entrare, sarebbe meglio spiegare in maniera più chiara il tutto.


  • User Attivo

    Ho creato un form di registrazione con jquery, html e php...
    Poi ho creato da me il file php che serve per far inserire i dati nel database...
    Tutto funziona, nel senso che nel database i miei dati si registrano...
    Poi ho creato un form di login, e quando inserisco i miei dati me li segna "non corretti"...
    Andando a tentativi, ho provato ad inserire anzichè la password, la password criptata nel database (qualcosa tipo fdf838fdsfdf3...) e funziona!
    Quindi il mio login ora richiede il nickname e la password criptata, e non so perchè! Dovrebbe chiedere la password normale!
    Da cosa è dovuto?


  • Moderatore

    Ciao Marinski,
    a occhio direi che la password che inserisci nel tuo form di login dovrebbe essere criptata con l'apposita funzione (la stessa usata dallo script per la registrazione che inserisce i dati nel database) prima di essere comparata con quella registrata nel database, altrimenti succede quello che hai descritto, credo.


  • ModSenior

    È evidente che lo script di login effettua la query utilizzando l'hash della password inserita dall'utente mentre la registrazione non la inserisce come hash bensì viene inserita in chiaro.


  • User Attivo

    Io cripto la password così
    [PHP]$pass_md5 = md5($password);[/PHP]
    Se tolgo questa stringa la password neanche me la inserisce nel database...

    Il login invece funziona così
    [PHP]<?php

    include ("configurazione.php");

    $username=$_POST['username'];
    $password=$_POST['password'];
    $sql="SELECT * FROM tabella_registrati WHERE username='$username' and password='$password'";
    $result=mysql_query($sql);
    $count=mysql_num_rows($result);
    // If result matched $username and $password, table row must be 1 row
    if($count==1){
    // Register $username, $password and redirect to file "loginsuccess.php"
    session_register("username");
    session_register("password");
    header("location:loginsuccess.php");
    }
    else {
    echo "Username o password errati";
    }
    ?>[/PHP]

    questa è la pagina completa per inserire i dati nel db

    [PHP]<?php
    $connessione=mysql_connect("localhost","marinski","") or die(mysql_error());
    $scelta_db=mysql_select_db("my_marinski") or die(mysql_error());
    ?>
    <?php

    // recuperiamo i dati inviati con il form

    $username = $_POST['username'];

    $firstname = $_POST['firstname'];

    $lastname = $_POST['lastname'];

    $age = $_POST['age'];

    $gender = $_POST['gender'];

    $country = $_POST['country'];

    $email = $_POST['email'];

    $password = $_POST['password'];

    $cpassword = $_POST['cpassword'];

    // ora controlliamo che i campi siano stati tutti compilati

    if ( $username == TRUE && $firstname == TRUE && $lastname == TRUE && $age == TRUE && $gender == TRUE && $country == TRUE && $email == TRUE && $password == TRUE && $cpassword == TRUE ) {

    // controlliamo se il campo mail è stato scritto in maniera errata

    $mail = eregi("^[_a-z0-9+-]+(.[_a-z0-9+-]+)*@[a-z0-9-]+(.[a-z0-9-]+)+$",$email);

    if ( $mail == TRUE ) {

    // controlliamo se l'email o l'username sono già presenti nel database

    $sql = mysql_query("SELECT * FROM tabella_registrati WHERE email = '$email'") or die ("Mail già occupata");

    $num_rows = mysql_num_rows($sql);

    if ( $num_rows == 0 ) {

    // ora controlliamo che le password inserite siano identiche

    if ( $password == $cpassword ) {

    // infine criptiamo la password con md5

    $pass_md5 = md5($password);

    $username = mysql_real_escape_string($username);

    $nome = mysql_real_escape_string($firstname);

    mysql_query("INSERT INTO tabella_registrati
    (id , username , firstname , lastname , password , gender , age , country , email )
    VALUES
    ('','$username', '$firstname', '$lastname', '$pass_md5', '$gender', '$age', '$country', '$email' )") OR DIE(mysql_error());

    // e inviamo una mail con la riuscita registazione

    mail ($email, "Registrazione OK", "Complimenti registrazione effettuata con successo", "From: [email protected]");

    // messaggio da far visualizzare all'utente finale

    echo "Complimenti registrazione effettuata con successo.";

    } else {

    echo "Le password non corrispondono";

    }

    } else {

    echo "Indirizzo mail già utilizzato.";

    }

    } else {

    echo "La tua mail non è idonea, per la registrazione.";

    }

    } else {

    echo "Tutti i campi sono obbligatori.";

    }

    ?>[/PHP]


  • Moderatore

    Secondo me dovresti criptare la password da confrontare nella query del form di login:

    $sql="SELECT * FROM tabella_registrati WHERE username='$username' and password='$password'";
    

    Per esempio, prima della query puoi inserire la semplice istruzione:

    $password = md5($password);
    ```Oppure caricare l'hash in un'altra variabile e poi usare quella per il confronto nella query di login.

  • User Attivo

    Gianrudi era proprio quel che mancava...
    Il [PHP]$password = md5($password);[/PHP] nel codice del login!
    Grazie!