Fatto al volo prima di uscire...
Codice PHP:
<?php
//funzione calcolo pass
function PasswordCasuale($lunghezza){
$caratteri_disponibili ="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
//$caratteri_disponibili ="abcdefghijklmnopqrstuvwxyz0123456789";
$password = "";
for($i = 0; $i<$lunghezza; $i++){
$password = $password.substr($caratteri_disponibili,rand(0,strlen($caratteri_disponibili)-1),1);
}
return $password;
}
//config
$host_db='localhost';
$login_db='cgfsito2';
$pwd_db='cakdasapko80';
$database = "my_cgfsito2";
//se è stato premuto invia e i campi non sono vuoti procedo
if($_POST['invia'] && !empty($_POST['email']) ) {
$errore = '';
//controllo che l'email sia in un formato valido
if(!preg_match('/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/', $_POST['email'])) $errore .= "<h3>L'email inserita non è in un formato valido</h3>";
//mi connetto al db
mysql_connect($host_db, $login_db, $pwd_db) OR die(mysql_error());
mysql_select_db($database, $db) or die("Errore durante la selezione del database");
//salvo i dati in delle variabili
$email = mysql_real_escape_string($_POST['email']);
//la query che cerca l'account
$query = mysql_query("SELECT id, email FROM users WHERE email = '$email'") or die('Errore!');
//se lo trovo procedo altrimenti do un errore
if($dati = mysql_fetch_array($query))
$iId = $dati['id'] ;
else $errore .= "<h3>Dati errati</h3>";
//se non ci sono errori procedo
if($errore == ""){
//genero la nuova pass casuale
$password=PasswordCasuale(10);
//Se l'inserimento della nuova pass va a buon fine invio l'email
if(mysql_query(
sprintf("UPDATE `users` SET `pass` = '%s' WHERE `id` = %d LIMIT 1",
md5($random_string),
$iId
)
)){
$oggetto = "Nuova Password";
$headers = "From: latuaemail@tuaemail.it";
$msg = "Come da lei richiesto le inviamo la nuova password.\r\n".
"---------- NUOVA PASS ---------- \r\n \r\n".
"$password\r\n\r\n".
"-------------------------------- \r\n".
"Le auguriamo una buona giornata, \r\n".
"Lo staff.";
//se l'email è stata inviata stampo il messaggio di conferma
if(mail($_POST['email'], $oggetto, $msg, $headers))
echo "<center>Richiesta inoltrata con successo,<br /> A breve riceverà un email con la nuova password nella sua email di registrazione.</center>";
else echo "<center>Errore!!!!!! Riprovi più tardi</center>";
}
}
else{
echo "<center>$errore</center>";
}
}
else {
?><center>
<form action='' method="post">
Email di registrazione:<br />
<input type='text' name='email' /><br /><br />
<input type="submit" name="invia" />
</form>
</center>
<?php
}
?>
Nei tuoi script fai riferimento a 2 tab del db, credo sia un errore di scrittura, io ho usato quella che mi hai fornito all'ultimo.
Scrivi se va, quando torno vediamo.
P.S.
L'ho commentato, cosi te lo vedi un po'
Logicamente adattalo alle tue esigenze.