Nume si site in mesaj recuperare parola
Scris: Dum Dec 02, 2012
Am acest cod de recuperare parola. functioneaza dar trimite doar mesajul asta :
"Primiti acest mesaj in urma solicitarii dumneavoastra de a va recupera parola
Noua parola este : 7pzlokxbfqm "
Ok e bine, parola primita pe email functioneaza, dar doresc sa imi trimita pe email si numele de utilizator plus adresa site-ului. Adica mesajul sa fie asa:
"Primiti acest mesaj in urma solicitarii dumneavoastra de a va recupera parola
Acum te poti loga pe scapadeplictiseala.tk cu
Numele de utilizator : Scapadeplictiseala
Noua parola : 123456789"
Am incercat sa modific dar nu am reusit, imi trimitea pe email ba doar numele de utilizator fara alt mesaj, ba parola fara alt mesaj.
"Primiti acest mesaj in urma solicitarii dumneavoastra de a va recupera parola
Noua parola este : 7pzlokxbfqm "
Ok e bine, parola primita pe email functioneaza, dar doresc sa imi trimita pe email si numele de utilizator plus adresa site-ului. Adica mesajul sa fie asa:
"Primiti acest mesaj in urma solicitarii dumneavoastra de a va recupera parola
Acum te poti loga pe scapadeplictiseala.tk cu
Numele de utilizator : Scapadeplictiseala
Noua parola : 123456789"
Am incercat sa modific dar nu am reusit, imi trimitea pe email ba doar numele de utilizator fara alt mesaj, ba parola fara alt mesaj.
Cod: Selectaţi tot
<?php include('meniu-sus.php');
include('conectare.php');
$salt = 'qwertyAF347658@$%AdfSV045*&erTyUsdfYtrLmncBGhu';
$rand = 'abcdefghijklmnoqprstuvxwz0123456789';
$sufix = '@yahoo.com';
//mesaj
$mesaj = "<html><head><title>Resetare parola</title></head><body>
<p>Primiti acest mesaj in urma solicitarii dumneavoastra de a va recupera parola</p>
<p>Noua parola este : %p</body></html>";
$table = 'membri';//tabelul unde avem datele utilizatorilor parola email ne intereseaza in special
$coloana = 'idm';//numele coloanei unde este salvat emailul utilizatorului
$nume_coloana = 'nume';//numele coloanei care contine numele utilizatorului
/**
* functii folosite
**/
//functie hash
function user_hash($str){
$hash = md5($str);
return $hash;
}
//generare parola aleatoare
function rand_pass($rand, $lenght = 10){
for($i = 0; $i <= $lenght; $i++){
$tmp[] = $rand[rand(0, strlen($rand)-1)];
}
return implode('',$tmp);
}
//minimum de securitate, cel putin in cazul de fata nu prea e necesar
function clean($str){
return htmlentities(trim(strip_tags($str)), ENT_QUOTES, 'utf-8');
}
//verificam lungimea maxima si minima a inputului venit de la utilizator
function valid($str){
$range = range(5, 25);
if(!in_array(strlen($str), $range)){
return false;
}
return true;
}
//conectare la baza de date folosim pdo totusi e 2012 functiile mysql din php se apropie de sfarsit
$dsn = 'mysql:dbname='.$database.';host='.$server.';charset=utf8';
$dbh = new PDO($dsn, $database, $pass);
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
/** script
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
**/
//verificam daca formularul a fost postat
if(isset($_POST['recuperare'])){
// verificam si curatam id-ul trimis prin post
$id = (isset($_POST['id']) && !empty($_POST['id']) && valid($_POST['id'])) ? clean($_POST['id']) : false;
//incercam o interogare cu id-ul trimis dupa ce am verificat ca a fost trimis prin formular si este intre 5si 32 caractere
if($id){
$prep = $dbh->prepare('SELECT * FROM '.$table.' WHERE '.$coloana.' = ? LIMIT 1');
$prep->bindParam(1, $id, PDO::PARAM_STR, 32);
$prep->execute();
$row = $prep->fetch();
//daca interogarea a reusit continuam
if($prep->rowCount()){
//preluam numele
$nume = $row[$coloana];$idsuf = $id.$sufix;//concatenam id-ul cu prefixul @yahoo.com pt a obtine o adresa valida de email
//generam parola aleatoare si hash-ul ei
$ress_pass = rand_pass($rand);
$hash_pass = user_hash($ress_pass);
//incercam update la parola
$sql = 'UPDATE '.$table.' SET parola = ? WHERE '.$coloana.' = ? LIMIT 1';
$prep = $dbh->prepare($sql);
$prep->bindParam(1, $hash_pass);
$prep->bindParam(2, $id, PDO::PARAM_STR, 32);
//daca update-ul a reusit incercam sa trimitem un email
if($prep->execute()){
$subiect = 'Resetare parola';
$headers = 'From: scapadeplictiseala@yahoo.com' . "\r\n";
$headers .= 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
if(mail($idsuf, $subiect,$msg = str_replace('%p', $ress_pass, $mesaj), $headers)){
die('<h4>'.$nume.' parola ta a fost resetata cu succes. Un email a fost trimis pe adresa '.$idsuf.' cu o noua parola</h4>');
}else{
die('<h4>Parola a fost resetata, dar nu am putut trimite emailul. Va rugam sa resetati iar mai tarziu pentru a primi un email cu noua parola</h4>');
}
}else{
die('<h4>O eroare a aparut nu putem reseta parola.</h4>');
}
}else{
die('ID-ul specificat nu exista.');
}
}else{
echo '<h3>Va rugam introduceti un id de messanger</h3>';
}
}
// este gandit pt topicul de fata dar se poate modifica usor
?>