[PHP] SELECT, UPDATE VERIFICARNE IL RISULTATO

webmachine

Utente Attivo
12 Gen 2016
43
0
6
Ciao a tutti,
ho creato un piccolo script in PHP che permette all'utente di reimpostare la password, il problema è che esso non funziona e sicuramente sbaglio qualcosa quindi ho bisogno di voi. Qui sotto vi lascio il codice dello script commentato ;)
La mail viene inviata a questo script tramite POST
Codice:
$query = "SELECT mail FROM `anagrafica` WHERE mail = '$mail'"; // CERCO SE LA MAIL INSERITA E' REGISTRATA NEL DATABASE 
$res=@mysql_num_rows($query);
if ($res > 0){ // SE è REGISTARTA
    $query = "UPDATE `anagrafica` SET `password`= '$code'  WHERE mail = '$mail'"; //AGGIORNO LA PASSWORD CON QUELLA GENERATA 
    $res=mysql_query($query);
    if ($res > 0){ 
    // INVIO MAIL CON NUOVA PASSWORD
    $msg = "Abbiamo inviato le istruzioni per reimpostare la password a <b>$mail</b><br>Controlla anche lo SPAM!";
   
    }else{
    $msg = "Impossibile impostare la password, scrivi a <b>info@fricarica.it</b>"; 
    
    }
}else{
    $msg = "Questa mail non e' associata a nessun account :("; //SE NON E' REGISTRATA!
  
}
Tutte le volte che inserisco la mail ottengo come risposta L'ultimo $msg "Questa mail non è associata...account".
Grazie Mille in anticipo a tutti quanti :*
 

AdeKnite

Utente Attivo
3 Ago 2016
161
35
28
26
Innanzitutto, quando hai problemi, è buona prassi iniziare con un debug, per cui è essenziale visualizzare gli errori che ti vengono restituiti; la prossima volta evita la @.

Detto questo, il problema principale (ma non certo l'unico) è il fatto che non esegui la prima query. Prima di eseguire la funzione mysql_num_rows, devi eseguire la funzione mysql_query.

C'è almeno un altro paio di cose che risulta brutto a livello di codice: mi riferisco a alla condizione annidata completamente inutile e al fatto che utilizzi le funzioni mysql_.

Ti posto un primo abbozzo di codice (ti consiglio tuttavia di passare alle funzioni mysqli o PDO)

PHP:
$connessione = mysql_connect("localhost", "root", ""); // cambiare parametri
mysql_select_db("prova", $connessione); // inserire nome db

$exec = mysql_query("SELECT mail FROM anagrafica WHERE mail = '$mail'", $connessione); // ESEGUO LA QUERY
$res = mysql_num_rows($exec); // prelevo il numero di righe

if ($res > 0) { // se c'è almeno una riga
    $query = "UPDATE anagrafica SET password = '$code'  WHERE mail = '$mail'"; //AGGIORNO LA PASSWORD CON QUELLA GENERATA
    $res=mysql_query($query, $connessione);
    $msg = "Abbiamo inviato le istruzioni per reimpostare la password a <b>$mail</b><br>Controlla anche lo SPAM!";
} else {
    $msg = "Questa mail non e' associata a nessun account."; //SE NON E' REGISTRATA!
}
 
Ultima modifica:

webmachine

Utente Attivo
12 Gen 2016
43
0
6
Ciao Adenine,
Sì, purtroppo hai ragione ci sono molte cose che non vanno però ti ringrazio perché adesso funziona.

Possiamo Chiudere il topic ;)