Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Problema modulo cambio password

    Buongiorno.. ho un urgente problema da risolvere.
    Ho scritto un codice in php per permettere ad un utente di cambiare password.

    La form è costituita da due campi: Password attuale e Nuova Password.

    L'utente inserisce la sua vecchia password, inserisce quella nuova, e gliela modifica. Nulla di che, è uno script semplicissimo.

    Il problema è che quando entra nell' IF ($attpass = $ex), mi fa cambiare la password anche se inserisco dati a caso. In teoria, se inserisco una password diversa da quella attuale dovrebbe far apparire il messaggio: "La password attuale non corrisponde!" Invece me la fa cambiare comunque.

    Questo è il codice:

    if (isset($_POST['esegui']))
    {
    if(($_POST['attpass'])&&($_POST['newpass'])!="")
    {
    $attpass=md5($_POST['attpass']);
    $newpass=md5($_POST['newpass']);
    $rac="SELECT password FROM utente WHERE id=$sesutente";
    $ex=mysql_query($rac)or die (mysql_error());
    if($attpass = $ex)
    {
    if($newpass!=$attpass)
    {
    $passquery="UPDATE utente SET password=('$newpass') WHERE id=$sesutente";
    $queryeseguita= mysql_query($passquery)or die (mysql_error());
    echo "<p class='allpm'>Password modificata</p>";
    @$_SESSION['pass']=$newpass;
    header("Refresh: 2; url=" . $_SERVER["PHP_SELF"]);
    }else{
    echo "<p class='allpm'>La password inserita è identica alla precedente!</p>";
    }
    }else{
    echo "<p class='allpm'>La password attuale non corrisponde!</p>";
    }
    }else{
    echo "<p class='allpm'>Necessario compilare tutti i campi!</p>";
    }
    }


    Precisazione: $sesutente contiene l'id di sessione.

  2. #2
    if($attpass == $ex)

    Se metto due simboli == nemmeno mi entra nell'If, non trova corrispondenza anche la password attuale è corretta.

    Forse sto sbagliando qualcosa con md5 e non riconosce le password?

  3. #3
    Originariamente inviato da raven74
    mysql_query non restituisce la password ma una resource

    poi quanto restuito da mysq_query va trasformato in un array con mysql_fetch_assoc

    e dall'array ti ricavi la vecchia password.

    Ma tutto sommato è inutile. Molto meglio verificare subito se l'utente ha quella password. Meglio fare qualcosa del genere

    SELECT COUNT(*) FROM t_utente WHERE utente WHERE id=$sesutente AND password = MD5($attpass)

    Ho provato come mi hai consigliato e funziona!
    Stasera faccio ulteriori prove per conferma.. ma dovrebbe andare.
    Grazie raven!

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.