Visualizzazione risultati 1 fino 9 di 9

Discussione: Aggiornare la password nel database

  1. #1
    raimaker non è connesso Utente giovane
    Data registrazione
    25-09-2011
    Messaggi
    94

    Predefinito Aggiornare la password nel database

    Salve,
    mi date una mano a capire perchè questo script mi restituisce una pagina bianca senza fare nessun aggiornamento al database ?

    nb. all' utente dal recupero password gli arriva una password in formato md5

    Codice PHP:
    <?php
    require 'config.php';
    require
    'connect.php';

    $email = mysql_real_escape_string($_POST['email']); //L'e-mail dell'utente
    $oldpassword = $_POST['oldpass'];// password recuperata dall' utente in formato md5
    $newpassword = mysql_real_escape_string(md5($_POST['pass'])); //Criptiamo la password in md5
    $lungpass = strlen($_POST['pass']); //Calcoliamo la lunghezza della password
    $confpass = mysql_real_escape_string(md5($_POST['confpass']));//Password di conferma criptata

    if ("$lungpass"<=6) //Se la password ha meno di 6 caratteri non verrà accettata
    {
    echo
    "<p align='center'><b><font color='#FF0000' size='5'>La password deve avere una lunghezza di almeno 6 lettere(spazi inclusi)</font></b><br /></p>";
    echo
    "<p align='center'><a href='javascript:history.go(-1)'>Torna Indietro</a></p>";

    }
    else
    //Se invece la password ha almeno 6 caratteri continuiamo
    {
    if (
    "$newpassword" != "$confpass") //*Controlliamo che le due password siano le stesse,

    {
    echo
    "<p align='center'><b><font color='#FF0000' size='5'>Le due password non coincidono.</font></b><br /></p>";
    echo
    "<p align='center'><a href='javascript:history.go(-1)'>Torna Indietro</a></p>";
    }

    else
    //Se invece le password sono uguali continuo

    {

    // cerco nel database se esiste l' email dell' utente

    $cercaemail = mysql_query("SELECT * FROM utenti WHERE email = '$email' and reg='1'");
    $result=mysql_query($cercaemail);

    while (
    $row = mysql_fetch_array($result)) {

    //verifico l' email
    if ($row['email'] == $email) {


    //aggiorno la password nel database
    $sql1 ="UPDATE utenti SET password='$newpassword' WHERE email='$email' AND password='$oldpassword' AND reg='1' LIMIT 1";
    $result=mysql_query($sql1);

    echo
    "<p align='center'><font color='#FF0000' size='5'>Password aggiornata ";
    }
    else
    {
    echo
    "email : ".$email." non trovata <br>" ;
    }
    }
    }
    }

    ?>
    Ultima modifica di raimaker : 30-10-2011 alle ore 20.59.24

  2. #2
    Guest

    Predefinito

    Dopo ogni query al db prova a stampare mysql_error

  3. #3
    raimaker non è connesso Utente giovane
    Data registrazione
    25-09-2011
    Messaggi
    94

    Predefinito

    Ciao simpleticket,
    dopo aver inserito
    Codice PHP:
    $result=mysql_query($cercaemail)or die (mysql_error());
    mi esce questo 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 'Resource id #5' at line 1
    Ultima modifica di alemoppo : 31-10-2011 alle ore 18.53.52 Motivo: +tag [php] e [quote]

  4. #4
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Il problema è qui:
    Codice PHP:
    $cercaemail = mysql_query("SELECT * FROM utenti WHERE email = '$email' and reg='1'");
    $result=mysql_query($cercaemail);
    Esegui la query, poi cerchi di rieseguirla (quando ormai $cercaemail contiene la risorsa che punta alla query). Non so per quale motivo .
    Comunque, il codice corretto:
    Codice PHP:
    $cercaemail = "SELECT * FROM utenti WHERE email = '$email' and reg='1'";
    $result=mysql_query($cercaemail);
    Ultima modifica di javascripter : 31-10-2011 alle ore 19.05.56

  5. #5
    raimaker non è connesso Utente giovane
    Data registrazione
    25-09-2011
    Messaggi
    94

    Predefinito

    adesso aggiorna la password però ho ancora questa anomalia

    se faccio prova a mettere l' email sbagliata non mi stampa a video
    la dicirura email non trovata esce una pagina bianca

    Codice PHP:
    if ($row['email'] == $email) {

    //aggiorno la password nel database
    $sql1 ="UPDATE utenti SET password='$newpassword' WHERE email='$email' AND password='$oldpassword' AND reg='1' LIMIT 1";
    $result=mysql_query($sql1);

    echo
    "<p align='center'><font color='#FF0000' size='5'>Password aggiornata ";
    }
    else
    {
    echo
    "email : ".$email." non trovata <br>" ;
    }

  6. #6
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Si, perché il while viene avviato solo se la query contiene uno o più risultati.
    Dovresti fare un controllo con mysql_num_rows o con qualche variabile.

    Inoltre, se la query estrae un singolo record, non hai bisogno di usare il while.

  7. #7
    raimaker non è connesso Utente giovane
    Data registrazione
    25-09-2011
    Messaggi
    94

    Predefinito

    Ciao javascripter ho fatto così e funziona,
    mi dai un'occhiata se è corretto o migliorare qualcosa ?
    Pio se volessi far uscire un messaggio di
    " password errata " o Email errata " come modificare lo script ?

    Codice PHP:
    // cerco nel database se esiste l' email e la vecchia password dell' utente
    $cercaemail = "SELECT * FROM utenti WHERE email = '$email' and password = '$oldpassword' and reg='1'";
    $query_result = mysql_query($cercaemail)or die ("Database non trovato: " . mysql_error());
    $esito = mysql_num_rows($query_result);

    if (
    $esito == 1){
    //aggiorno la password nel database
    $sql1 ="UPDATE utenti SET password='$newpassword' WHERE email='$email' AND password='$oldpassword' AND reg='1' LIMIT 1";
    $result=mysql_query($sql1);

    echo
    "<p align='center'><font color='#008000' size='5'>Password aggiornata ";

    }
    else {
    echo
    $esito."<p align='center'><font color='#FF0000' size='5'> Email o password errata. <br>";
    }

  8. #8
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Allora, è corretto.
    Per gli altri messaggi puoi fare così:
    Codice PHP:
    // cerco nel database se esiste l' email
    $query = mysql_query("SELECT * FROM utenti WHERE email = '$email' AND reg='1' LIMIT 1") || die ('Errore: ' . mysql_error());

    echo
    '<p align="center">';

    if (
    mysql_num_rows($query)) {
    //controllo se la password combacia
    $r = mysql_fetch_array($query);

    if(
    $r['password'] === $oldpassword) { // combacia, aggiorna il database
    $q = mysql_query("UPDATE utenti SET password='$newpassword' WHERE email='$email' AND password='$oldpassword' AND reg='1' LIMIT 1") || die('Errore: ' . mysql_error());
    echo
    mysql_affected_rows() ? '<font color="#008000" size="5">Password aggiornata</font>' : 'Errore inaspettato';
    } else {
    // pasword errata
    echo '<font color="#FF0000" size="5">Password errata</font>';
    }
    } else {
    // email errata
    echo '<font color="#FF0000" size="5">Email errata.</font>';
    }

    echo
    '</p>';
    Ultima modifica di javascripter : 02-11-2011 alle ore 14.53.32

  9. #9
    raimaker non è connesso Utente giovane
    Data registrazione
    25-09-2011
    Messaggi
    94

    Predefinito

    Citazione Originalmente inviato da javascripter Visualizza messaggio
    Allora, è corretto.
    Per gli altri messaggi puoi fare così:
    Codice PHP:
    // cerco nel database se esiste l' email
    $query = mysql_query("SELECT * FROM utenti WHERE email = '$email' AND reg='1' LIMIT 1") || die ('Errore: ' . mysql_error());

    echo
    '<p align="center">';

    if (
    mysql_num_rows($query)) {
    //controllo se la password combacia
    $r = mysql_fetch_array($query);

    if(
    $r['password'] === $oldpassword) { // combacia, aggiorna il database
    $q = mysql_query("UPDATE utenti SET password='$newpassword' WHERE email='$email' AND password='$oldpassword' AND reg='1' LIMIT 1") || die('Errore: ' . mysql_error());
    echo
    mysql_affected_rows() ? '<font color="#008000" size="5">Password aggiornata</font>' : 'Errore inaspettato';
    } else {
    // pasword errata
    echo '<font color="#FF0000" size="5">Password errata</font>';
    }
    } else {
    // email errata
    echo '<font color="#FF0000" size="5">Email errata.</font>';
    }

    echo
    '</p>';
    Indipendentemente se corretta o no l 'email ,
    mi visualizza sempre " Email errata" anche simulando la password sbagliata .

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •