Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Problemi sistema login

  1. #1

    Problemi sistema login

    Buona sera,
    ho un serio problema con il mio sistema di login: una volta effettuata la registrazione la password dell'utente viene immagazzinata all'interno di un db dopo essere stata processata dalla funzione password_hash(). Nel sistema di login un if utilizza la funzione gemella password_verify() per controllare che la password immessa corrisponda a quella nel db, ma purtroppo sembra non funzionare(ho verificato di inserire la stessa passwd da ambo le parti)...
    Qui le parti di codice interessate:
    Registrazione:
    Codice PHP:
    $register mysql_query("INSERT INTO utenti (nome, cognome, email, telefono, password, code, verifica) VALUES ('".$nome."', '".$cognome."', '".$email."', '".$telefono."', '".password_hash($pass)."', '".$code."', 'false') ") or die (mysql_error()); 
    Login:
    Codice PHP:
    $controllo mysql_query("SELECT * FROM utenti WHERE email = '".$email."' ") or die (mysql_error());    if(mysql_num_rows($controllo) == 0){        header('Location: login.php?error=1');    }
    $find mysql_fetch_array($controllo);
    if(
    $password == md5($find['password'])){        $_SESSION['id'] = $find['id'];        $_SESSION['stat'] = true;        echo "LOGIN ESEGUITO CON SUCCESSO";        //header('Location: home.php');    }else{        echo "<br>ERRORE, LOGIN FALLITO<br>";        //header('Location: login.php?error=2');    } 
    Sono ore che ci sbatto la testa, ma non sono riuscito a risolvere, cosa posso fare??

  2. #2
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    Nel sistema di login un if utilizza la funzione gemella password_verify() per controllare che la password immessa corrisponda a quella nel db
    Sarò pure ciecato, ma giuro che non vedo nessun password_verify nel codice che hai postato.

  3. #3
    Ciao,

    La funzione password_hash restituisce una stringa che contiene sia l'hash e il sale. Quindi:
    $ hash E Salt = password_hash ($ password, PASSWORD_BCRYPT);
    // Inserire $ hashAndSalt nel database contro utente
    Poi per verificare:
    // Recupera hash + sale dal database, posto nella variabile $ hashAndSalt
    // E poi di verificare $ password:
    if (password_verify ($ password, $ hashAndSalt)) {// verificati
    }

    Inoltre, come suggeriscono i commenti, se sei interessato a sicurezza ti consiglio a guardare mysqli (ext / mysql è deprecato in PHP5.5), e anche questo articolo su SQL injection.

    Adesso tu fai la verifica con md5.

    Cristiana,
    OracleCloud

  4. #4
    Errore mio nel postare il codice del sistema di login, ecco quello giusto:

    Codice PHP:
    <?php    session_start();    $email $_POST['email'];    $password $_POST['password'];    echo "DATI RICEVUTI; email=".$email."  password=".$password;    echo "<br>";    echo "SESSIONE AVVIATA<br>";    require_once('mysqlconn.php');    echo "FILE DATI ACCESSO RICHIESTO<br>";    mysql_select_db($database$utenti);    echo "CONNESSIONE ESEGUITA<br>";    $controllo mysql_query("SELECT * FROM utenti WHERE email = '".$email."' ") or die (mysql_error());    if(mysql_num_rows($controllo) == 0){        header('Location: login.php?error=1');    }    var_dump($controllo);    echo "QUERY ESEGUITA<br>";    $find mysql_fetch_array($controllo);    var_dump($find);    echo "<br>Db: ".$find['password'];    echo "<br>PRONTO AL CONTROLLO<br>";    if(password_verify($password$find['password'])){        $_SESSION['id'] = $find['id'];        $_SESSION['stat'] = true;        echo "LOGIN ESEGUITO CON SUCCESSO";        //header('Location: home.php');    }else{        echo "<br>ERRORE, LOGIN FALLITO<br>";        //header('Location: login.php?error=2');    }?>
    Nonostante sia implementato bene non funziona...

  5. #5
    Beh "implementato bene" e' una versione ottimistica, diciamo. Comunque definisci "non funziona": ottieni errori? Ottieni login fallito anche con la password corretta?

  6. #6
    Il login è fallito anche con la password corretta.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.