Salve a tutti.
Premetto che è da poco che mi cimento con php/mysql, in quanto devo preparare una tesina per il mio corso di studi, quindi non sono molto ferrato in materia, ma piano piano mi sto appasionando. Detto questo vi espongo il mio problema.
Ho realizzato uno script per il recupero pass, e l'utente per fare la richiesta deve inserire due valori, immessi precedentmente all'atto di registrazione,che sono:
Codice Rfid - Univoco per ogni utente;
Email - Univoca anche questa;
Ora il mio problema è che, se i dati inseriti sono corretti, allora mi manda tranquillamente la mail con la nuova password e tutto ok funziona, invece se inserisco dati sbagliati, quindi non presenti nel mio db, nei due campi codice_rfid e email, mi ricompare la stessa pagina dicendomi che la mail a quell'indirizzo di mail non esistente nel db è stata spedita!!!!
invece mi dovrebbe dire che tali valori inseriri non esistono nel db e poi lo faccio tornare indietro per mettere quelli esistenti!
Spero di essermi spiegato, cmq vi posto il codice:
Codice PHP:
<?php
require('connessionedb.php'); //o le vostre istruzioni per il collegamento al database
$_rfid_pass_persa = $_POST['rfid_pass_persa'];
$_email_pass_persa = $_POST['email_pass_persa'];
//verifichiamo che codice_rfid e email siano presenti nel db
$query = "SELECT user_firstname, user_username, user_password, user_password2 FROM user " .
"WHERE user_rfid = '$_rfid_pass_persa' ".
"AND user_email = '$_email_pass_persa' ";
$result = mysql_query($query) or die (mysql_error());
$row = mysql_fetch_array($result);
$user_firstname = $row['user_firstname'];
$user_username = $row['user_username'];
//codice rfid e email contemporaneamente non sono presenti nel db
if($result == 0)
{
echo "
";
echo "Il codice RFID e l'indirizzo E-mail inserite non sono presenti nel Data Base, scrivere i dati corretti relativi all'atto della registrazione";
echo "</p>";
//rimandiamo l'utente alla pagina precedente
echo "
";
echo "<a href=\"P_12_pass_lost.php\">";
echo "<<< Clicca qui per ritornare alla pagina precedente";
echo "</a>";
echo "</p>";
exit();
}
//Se invece codice rfid e email inseriia sono presenti nel db procediamo con l'invio di una nuova password generata casualmente e allo stesso tempo memorizzata nel database tramite md5 e inviata in chiaro all'utente.
else
{
// Lunghezza della password a 7 caratteri
$lunghezza_pass = 7;
$pass_generata = NULL;
// Ciclo su ogni carattere della password
for ($i=1; $i<=$lunghezza_pass; $i++)
{
// Se $i è multiplo di 2...
if ($i % 2)
{ //Aggiungo una lettera casuale usando chr() in combinazione con rand()
$pass_generata = $pass_generata . chr(rand(97,122));
// Se $x non è multiplo di 2...
}
else
{ // Aggiungo alla password un numerocompreso tra 0 e 9
$pass_generata = $pass_generata . rand(0,9);
}
}
//Assegno ad una variabile il valore in chiaro della password generata a random per inviarla tramite mail
$pass_generata_chiaro = $pass_generata;
//Assegno ad una variabile il valore hashato tramite md5 da memorizzare nel db
$pass_generata_md5 = md5($pass_generata);
//Faccio una query per memorizzare la nuova password random in md5 nel db nei due campi user_password e user_password2
$query_pass = "UPDATE user SET user_password = '$pass_generata_md5', user_password2 = '$pass_generata_md5'".
"WHERE user_rfid = '$_rfid_pass_persa' ".
"AND user_email = '$_email_pass_persa' ";
$result_pass = mysql_query($query_pass) or die (mysql_error());
}
?>
<html>
<head>
<title>Invio Mail con dati utente</title>
</head>
<body>
<?php
/*Arrivati a questo punto non ci resta che spedire un'email all'utente (all'indirizzo fornito
in fase di registrazione) che contiene:la sua password in chiaro,il suo username ed un link
alla pagina confirm_reg.php.*/
//Vediamo come funziona
$to = $_POST["email_pass_persa"];
$toname = $user_firstname;
$subject = "S.S.R.P. - Nuova Password";
/* Prima di continuare apriamo una piccola parentesi, chiarendo un concetto molto semplice:
- Se vogliamo inviare un email che contiene formattazioni html, bisogna ricorrere all'utilizzo di una classe.
- Se si vuol mandare un'email semplice che non contiene formattazioni html, non è necessario usare una classe
Nel nostro esempio, abbiamo scelto di inviare un'eamil, utlizzando una classe che definisce
il corpo del messaggio e le intestazione del messaggio.
Forniamo un link ad una classe mail completa e performante
[url]http://phpmailer.sourceforge.net[/url] */
//Definiamo la classe che definisce il corpo del messaggio ($message) e le intestazione del messaggio ($headers)
ini_set('SMTP','out.alice.it');
$boundary = "==MP_Bound_xyccr948x==";
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: multipart/alternative; boundary=\"$boundary\"\r\n";
$headers .= "From: [email]joppser@tiscali.it[/email]\r\n"; //inseriamo l'indirizzo email del mittente, cioè il nostro
$html_msg = "<center>";
$html_msg .= "<table width=\"500\" border=0 cellpadding=\"4\">";
$html_msg .= "<tr><td align=\"center\">";
$html_msg .= "</td></tr>";
$html_msg .= "<tr><td>Questi sono i dati che avevi richiesto, cerca di non smarrirli nuovamente:";
$html_msg .= "</td></tr><tr><td>Username: <font color=\"red\">" . $user_username . "</font>";
$html_msg .= "</td></tr><tr><td>Password: <font color=\"red\">" . $pass_generata_chiaro . "</font>";
$html_msg .= "</td></tr><tr><td align=\"center\">";
$html_msg .= "</td></tr></table></center>";
$confirmmessage = "Caro " . $toname . ",\n\n";
$confirmmessage .= "le consigliamo di stamapre questa mail e di non smarrirla:\n\n";
$confirmmessage .= $html_msg . "\n\n";
// Attenzione! Qui sotto dobbiamo inserire il percorso esatto che porta alla nostra pagina confirm_reg.php
$confirmmessage .= "<a href=\"#" ."\"></a>";
$message = "This is a Multipart Message in MIME format\n";
$message .= "--$boundary\n";
$message .= "Content-type: text/html; charset=iso-8859-1\n";
$message .= "Content-Transfer-Encoding: 7bit\n\n";
$message .= $confirmmessage . "\n";
$message .= "--$boundary--";
$mailsent = mail($to, $subject, $message, $headers);
if ($mailsent)
{
echo "Salve" . $toname . ",
";
echo "Un messaggio è stato inviato all'indirizzo [b]" . $to . "[/b] da te fornito.
";
echo "CONSIGLIO:
";
echo "Si consiglia vivamente di stampare tale email ricevuta e di non renderla visibile a nessuno onde evitare dispiacevoli situazioni di furto di dati personali.
Grazie per la gentile collaborazione.
";
} else {
echo "Errore durante l'invio dell'e-mail.";
}
?>
<center>[url="P_01_homepage.php"]- Clicca qui per tornare alla Home Page -[/url]</center>
</body>
</html>
Grazie a tutti coloro che mi aiuteranno!