Un sistema d'iscrizione con conferma e password reminder
Pagina 4 di 4
4. Il modulo "ricorda password"
Dimenticare le pasword è una cosa che accade spesso, in particolare se si utilizzano molti servizi basati su aree riservate; stesso discorso per quanto rigarda le email, plausibilemente il nostro messaggio per la conferma con i dati di attivazione finirà molto presto sepolto in un mare di altra posta e sarà alquanto difficile ritrovarlo.
Consci di questo problema che oggi come oggi riguarda un pò tutti, è bene facilitare la vita dei nostri utenti mettendo a loro disposizione un modulo per rientrare in possesso delle password dimenticate.
Nello scriptino che andremo ad analizzare non vi sono passaggi particolarmente complessi e per molti versi si tratta di un listato che ha tanti punti in comune con queli proposti nel corso di questa breve guida.
Per richiedere la propria password gli utenti dovranno indicare al modulo l'indirizzo di posta elettonica utilizzato in iscrizione; questo subirà il già noto controllo tramite espressioni regolari per la verifica del formato.
Se il formato dovesse risultare regolare, allora la tabella verrà interrogata in modo da stabiliere che l'indirizzo inviato sia effettivamente contenuto all'interno di uno dei records memorizzati.
Superata anche la seconda fase di verifica verrà inviata una mail contenente la password utilizzata per l'iscrizione:
<?php
// controllo sul parametro d'invio
if(isset($_POST['submit']) && (trim($_POST['submit']) == "Richiedi"))
{
//controllo sul formato dell'email
if((!isset($_POST['email'])) || (!eregi("^([a-z0-9\._-]+)(@[a-z0-9.-]+)(\.{1}[a-z]{2,4})$", $_POST['email'])))
{
// parametro non corretto
echo "Attenzione, formato email non valido.";
}else{
// se il parametro è corretto interroghiamo il database
$email = $_POST['email'];
// includiamo il file di configurazione
@include "config.php";
$ctrl_mail = @mysql_query("SELECT password FROM iscrizioni WHERE email='$email'") or die (mysql_error());
if(@mysql_num_rows($ctrl_mail) == 0)
{
echo "L'email non risulta registrata.";
}else{
//recuperiamo la password
if($ctrl_obj = @mysql_fetch_object($ctrl_mail) or die (mysql_error()))
{
// messaggio di conferma
echo "Abbiamo inviato la password al tuo indirizzo email";
// email per la conferma
// intestazioni
$headers = "From: $admin_email\nreply-To: noreply\r\n";
$subject = "Ricorda Password.";
// corpo del messaggio
$messaggio = "Ciao.\n";
$messaggio .= "La tua password è: ".$ctrl_obj->password."\n";
// invio dell'email
@mail($email, stripslashes($subject),stripslashes($messaggio),$headers);
}
}
}
}else{
// form per la richiesta
?>
<h1>Modulo ricorda password:</h1>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Email:<br>
<input name="email" type="text" size="20"><br>
<input name="submit" type="submit" value="Richiedi">
</form>
<?
}
?>
Tutto molto semplice quindi, il codice presentato potrà essere modificato e implementato secondo le diverse esigenze; per evitare che i nostri moduli siano presi d'assalto dagli spammers si raccomanda di integrare ogni form con l'integrazione di un codice di convalida ad inserimento manuale di tipo CAPTCHA.







