"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
?>