Ho creato un procedimento di recupero password per gli utenti di un sito.
La meccanica è molto semplice e ho dovuto utilizzare parti di codice da alcuni articoli e post di questo forum.
L'utente inserisce l'indirizzo email con cui si è registrato al sito e gli viene mandata una nuova password.
Tuttavia ovviamente non è il massimo che qualsiasi utente possa
cambiarti la password inserendo solo il tuo indirizzo di posta
Sulla falsa riga di questo forum volevo implementare una costrutto che mandasse una mail "volatile" all'utente
dicendogli che la sua password può essere cambiata semplicemente clikkando su un link aposito entro tot ore dal ricevimento della stessa, altrimenti la sua richiestà verrà ignorata.
Ovviamente non so proprio da che parte iniziare.
Vi va di darmi una mano?
Ecco il codice che ho implementato per la funzione originale (Thx agli autori dei post da cui ho tratto il codice):
Codice PHP:
$ricerca_mail = check_mail_lost($pass_lost);
$status = ($ricerca_mail === true) ? newpass($pass_lost) : REG_ERRORS;
switch($status){
case REG_ERRORS:
echo "$ricerca_mail";
break;
....
Funzioni nelle librerie:
Codice PHP:
function check_mail_lost($pass_lost) {
global $_CONFIG;
$pass_lost = isset($pass_lost) ? $pass_lost : null;
$pass_lost = trim($pass_lost);
if($pass_lost == "") {
return "Indirizzo non valido";
}
$query = mysql_query("
SELECT id
FROM ".$_CONFIG['table_utenti']."
WHERE mail='".$pass_lost."'");
if(mysql_num_rows($query) == 0) {
return "L'email non risulta tra quelle registrate";
}
return true;
}
function newpass($pass_lost) {
$pass_lost = isset($pass_lost) ? $pass_lost : null;
global $_CONFIG;
$pass = generatepass();
$temp = md5($pass);
$replace="UPDATE ".$_CONFIG['table_utenti']."
SET password='$temp' WHERE mail='$pass_lost'";
$risultato=mysql_query ($replace) or die ("Impossibile aggiornamento");
$testo = "Hai richiesto l'assegnazione di una nuova password:\n La seguente password sarà attiva con effetto immediato: {$pass}\n [url]http://www.sito.com[/url]";
mail($pass_lost, "Cambio pass", $testo, "From: [email]info@sito.com[/email]");
:master: :master: :master: