ciao ragazzi ho questo script per il recupero della password tramite mail che funziona in questo modo:
nel form inserisci il nickname e l'email di cui vuoi la password e lui in automatico ti genera una nuova password in modo random,la converte in md5 e ti aggiorna il database con quella appena creata.Dopodichè ti invia una mail contenente il nick e la nuova password...Il problema è che esegue tutta la procedura correttamente solo che quando eseguo di nuovo il login con la password che mi è stata mandata non mi autentica!! Scrivo quì il codice che ho usato:
<?php
require_once('connessionedb.php');
// genera una stringa casuale della lunghezza desiderata
// 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;
}
//controlla se la sessione è già attiva
if(isset($_SESSION['username']) && isset($_SESSION['password'])) {
//in tal caso ci reindirizza verso la homepage del sito o dovunque vogliate
header('Location: http://solochic.altervista.org/index.php');
}
//se il modulo è stato inviato
if(isset($_POST['submit'])) {
//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 * FROM `user` WHERE user_username = '".$_POST['username']."'";
$result = mysql_query($query);
$row = mysql_fetch_array($result);
$user_id = $row['user_username'];
$user_mail = $row['user_email'];
if($row < 1) die("nessuna corrispondenza trovata nel database");
if($row['user_email'] != $_POST['email']) die("Il nome utente non è associato all'indirizzo mail specificato");
else
{
$random_string = rand_string(10);
$invio_password = $random_string;
$pass = mysql_real_escape_string(md5($random_string));
$sql = "UPDATE `user` SET `user_password` = '".$pass."' WHERE `user_username` ='".$user_id."' LIMIT 1";
$result = mysql_query($sql);
$headers ="From:tuamail\r\n";
$subject ="aggiornamento password";
$message ="La tua nuova password è: $random_string";
$mailsent = mail($user_mail, $subject, $message, $headers);
if($mailsent && $result)
{echo "Aggiornamento password effettuato con successo";}
}
} else {
//visualizza il form login
?>
<form name="login" method="post">
<table cellpadding="5">
<tr>
<td>Username:
<input type="text" id="username" name="username" />
</td>
</tr>
<tr>
<td>E-mail:
<input type="text" id="email" name="email" />
</td>
</tr>
<tr>
<td align="center">
<input type="submit" value="Submit" name="submit" id="submit" class="button" />
<input type="reset" value="Reset" class="button" />
</td>
</tr>
</table>
</form>
<?php
}
?>
Come posso fare?