- Home
- Categorie
- Coding e Sistemistica
- Coding
- Script cambio password - bug
-
Script cambio password - bug
Ciao ragazzi, premetto che questo codice l'ho trovato in rete e riadattato alle mie esigenze, funziona correttamente solo che la scritta "password cambiata con succeso -login-" appare sempre invece di verificare l'istruzione if (mail && $result). Come mai? Incollo tutto il codice, l'errore è nelle ultime righe
(l'inizio della sessione e la connessione al db sono antecedenti la form e li ho omessi per comodità)
[php]<?php
// genera una stringa casuale della lunghezza desiderata
function rand_string($len, $chars = 'Labcdefghijklmnopqrstuvwxyz0123456789')
{
$string = '';
for ($i = 0; $i < $len; $i++)
{
$pos = rand(0, strlen($chars)-1);
$string .= $chars{$pos};
}
return $string;
}
//se il modulo non è stato inviato non fare nulla
if(!isset($_POST['submit']))
{}
else
{
//campo username vuoto
if(!$_POST['username']) die("Errore: Devi inserire il tuo username");
//campo password vuoto
if(!$_POST['email']) die("Errore: Devi inserire l'indirizzo mail dove inviare la nuova password");
$query = "SELECT * FROMmhp_userWHERE uname = '".$_POST['username']."'";
$result = mysql_query($query);
$row = mysql_fetch_array($result);
$user_id = $row['uid'];
$user_mail = $row['uemail'];
if($row < 1) die("nessuna corrispondenza trovata nel database");
if($row['uemail'] != $_POST['email']) die("Il nome utente non è associato all'indirizzo mail specificato");
else
{
$random_string = rand_string(10);
$invio_password = $random_string;
$sql = "UPDATEmhc_userSETupass= '".md5($random_string)."' WHEREuid='".$user_id."' LIMIT 1";
$result = mysql_query($sql);
$headers ="From:Hosting per Tutti";
$subject ="aggiornamento password";
$message ="La tua nuova password e': $invio_password";
mail($user_mail, $subject, $message, $headers);
if (mail && $result)
{echo "Password cambiata con successo: <a href='.?action=login'>login</a>";}
}
}?>[/php]
-
Ciao totemx e benvenuto nel Forum GT.
Credo che dovresti salvare il risultato della funzione mail in una variabile e quindi verificare quella o mettere direttamente la funzione mail dentro la condizione:
Opzione 1
[php]$mail=@mail($user_mail, $subject, $message, $headers);
if ($mail && $result)[/php]Opzione 2
[php]if ((mail($user_mail, $subject, $message, $headers)) && $result)[/php]Vedi se va in uno dei due modi.
-
Ciao ho provato, nada...

-
Tu dici che funziona tutto, ovvero manda la mail ed aggiorna il valore del campo nella tabella. Quindi, giustamente, deve dare quel messaggio che tutto è andato a buon fine.
Mi sa che mi sono confuso, mi puoi rispiegare il problema.?
-
Esatto, funziona tutto, la mail viene inviata, la tabella aggiornata ma il messaggio non ne vuole sapere di mandarmelo ! Comunque ho trovato un altro script che invece funziona nel frattempo, però mi piacerebbe capire perchè questo rogna...
-
Scusa tu sopra scrivi:
...funziona correttamente solo che la scritta "password cambiata con succeso -login-" appare sempre..
Il che è normale dato che lo script fa il suo dovere, ma...forse intendevi dire che non ti appare la scritta??
P.S. Sei invitato a non usare le abbreviazioni, siamo in un Forum non su un telefonino.

-
Ciao si ho sbagliato a scrivere, di solito tendo a non abbreviare ma l'ho fatto dato che era un messaggio inutile e frettoloso (vedi il primo che era giusto), comunque al massimo mi limito ai "cmq, xò e xè" per il resto scrivo per intero
