Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Errore mysql MD5

  1. #1

    Errore mysql MD5

    Ciao, premetto che prima di postare la mia richiesta ho fatto una ricerca ed ho letto un sacco di post e anche la guida;ho appena finito adesso di leggere ma non sono riuscito a risolvere il problema. Allora ho un form di registrazione in cui bisogna inserire nome utente, password e altri campi. Una volta inseriti, vado prima a controllare se l'utente è presente nel db e in caso negativo viene registrato. Il problema è che quando va a fare la query per controllare se l'utente è gia presente, mi da errore;

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 2

    Non riesco a trovarlo.
    Vi posto il codice:

    $utente = $_POST["nome_utente"];
    $pass = $_POST["password_utente"];
    $pass = MD5(trim(stripslashes($pass)));
    $query ="select * from utente where nome='$utente' and md5('password')='$pass'";
    $result = mysqli_query($link,$query)or
    die (mysqli_error($link));
    if(mysqli_num_rows($result) > 0)
    {
    echo "";
    }
    else
    {
    $query1 ="insert into utente (nome, password)
    values ('$utente', md5('$pass')";
    $result1 = mysqli_query($link,$query1)or
    die (mysqli_error($link));
    }


    Cosa c'è ch non va?
    Per evitare di ripostare in caso di un eventuale errore nella insert, secondo voi è corretta anche la query di inserimento?
    Aiutatemi che mi sta scoppiando la testa
    Un uomo è vecchio solo quando i rimpianti, in lui, superano i sogni. A. Einstein

  2. #2
    Sto scoppiando, non lo trovo l'errore ...vado a letto . Sono sicuro che voi lo riuscirete a trovare.
    Un uomo è vecchio solo quando i rimpianti, in lui, superano i sogni. A. Einstein

  3. #3
    Manca la parentesi della chiusura del VALUES.

    Mi pare che non sia corretto quello che fai con la password.

    Prima fai l'hash di $pass e quindi lo metti nel db, poi quando l'estrai fai l'hash dell'hash ???

    come puo' essere uguale?
    codice:
    $pass = MD5(trim(stripslashes($pass)));
    $query ="select * from utente where nome='$utente' and md5('password') = '$pass' "; 
    
    inserisci:
    
    $query1 ="insert into utente (nome, password) 
                  values ('$utente', md5('$pass') )"  ;
    in pratica fai dua hash di $pass quando inserisci ed uno solo quando verifichi con select. Anzi il valore del campo viene hashato tre volte....

    codice:
    1 - $pass = MD5(trim(stripslashes($pass)));
    2 - insert md5('$pass')
    3 - Select md5('password')

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    Ciao, non mi ero accorto della parentesi non messa, forse perchè erano diverse ore che stavo al computer non ci stavo più con la testa
    Ho modificato un pò il codice facendo caso a ciò che mi hai detto e adesso è tutto ok.
    Posto il codice corretto:
    $pass = MD5(trim(stripslashes($pass)));
    $query ="select * from utente where nome='$utente' ";

    inserisci:

    $query1 ="insert into utente (nome, password)
    values ('$utente', '$pass' )" ;

    Naturalmente nella select ho inserito la verifica se la pass che inserisco è già presenta in quanto più utenti possono avere la stesa password;a questo ho fatto caso sta mattina a mente riposata.
    Grazie
    Un uomo è vecchio solo quando i rimpianti, in lui, superano i sogni. A. Einstein

  5. #5
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    A dire il vero andrebbe fatto l'escape sulle stringhe che si inseriscono nel db...

  6. #6
    quando impazzisci con le query mysql in php fai un bel echo mysql_error(), vedrai che ti verrà più facile capire dove sbagli

  7. #7
    Originariamente inviato da mose81
    quando impazzisci con le query mysql in php fai un bel echo mysql_error(), vedrai che ti verrà più facile capire dove sbagli
    Si, loso, l'ho pure fatto, solo che avevo la testa proprio andata e non sarei riuscito a vedere neanche l'errore più banale ed evidente; infatti sta mattina mi sono reso conto della banalità dell'errore. Putroppo devo fare le ore piccoli in questi giorni, vuoi l'ultimo esame della specializtica,vuoi le tesi che sto finendo, vuoi un progetto che sto modificando...
    Un uomo è vecchio solo quando i rimpianti, in lui, superano i sogni. A. Einstein

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.