Forgot password recovery
Van egy elfelejtett jelszó lekérő felületemHa valaki megfelelő e-mail formátumot (@ és .) írt be és az email szerepel az adatbázisban, akkor kiküld egy emailt a megadott címre. Eddig ennyi stimmel.
A problémám az, hogy nem tudom hogyan kell kiolvastatni az adott emailcímhez tartozó jelszót a táblázatból. Ez --> mysql_query("SELECT * FROM reg WHERE jelszo='$regpas' ORDER BY emlekeztetek_mail"); Nekem egy butaságnak tűnik. A reg-ből kellene kiolvasni a jelszo-hoz tartozó jelszót, ami a begépelt $emlekeztetek_mail-hez tartozik.
A másik és szinte majdnem az egyik legfontosabb, hogy nem tudom hogyan kell a limitet beleprogramozni, tehát hogy egy adott mailcímhez pl. 3 napon belül egy emlékeztetőt lehessen kérni. Aki nekem ebben tudna segíteni és bele tudná pötyögni nekem az adott kódba a megoldást, azt nagyon megköszönném. A Mysql-el hadilábon állok, most tanulgatom...
■
if ($emlekeztet == "igen") {
$emlekeztetek = $_POST[emlekeztetek];
if ($emlekeztetek != "") {
if ($emlekeztetek_mail == "") {
$visszajelez_emlk = "Nem adod meg az email címet?";
}
if (!preg_match("/@/",$emlekeztetek_mail) || !preg_match("/./",$emlekeztetek_mail)) {
$visszajelez_emlk2 = "Érvénytelen e-mailcím!";
}
if ($emlekeztetek_mail != "" && preg_match("/@/",$emlekeztetek_mail) && preg_match("/./",$emlekeztetek_mail)) {
$ellenor_emlk1 = mysql_query("SELECT * FROM reg WHERE email='$emlekeztetek_mail'");
$ellenor_emlk2 = mysql_num_rows($ellenor_emlk1);
if ($ellenor_emlk2 == '1') {
$visszajelez_emlksiker = "Rendben, a jelszavad elküldtük a megadott emailcímre!";
mysql_query("SELECT * FROM reg WHERE email='$emlekeztetek_mail'");
mysql_query("SELECT * FROM reg WHERE jelszo='$regpas' ORDER BY emlekeztetek_mail");
$header2 = "xy##kukac##gmail.com";
$mes2 = "
A xyoldalon jelszó-emlékeztetőt kértél!
Itt a jelszavad: $regpas
Ha nem te kértél jelszó-emlékeztetőt, levelünk tárgytalan!
-----------------------------------------------------------------------------------------------------
Ez a rendszerből egy automatikusan továbbított üzenet, kérlek ne válaszolj.";
ini_set("SMTP","smtp.gmail.com");
ini_set("smtp_port","587");
ini_set("smtp_username","xy##kukac##gmail.com");
ini_set("smtp_password","xy");
mail($emlekeztetek_mail, 'Jelszó_emlékeztető', $mes2, $header2);
}else{
$visszajelez_emlkkudarc = "Az emailcím nem található az adatbázisban!";
}
}
}
print "<center><form id=belepes action=".$_SERVER['PHP_SELF']."?emlekeztet=igen method=post>
Email_cím: <input name=emlekeztetek_mail size=15 class=szovegdoboz maxlength=150><br><br>
<input type=submit value=Elküld class=gomb name=emlekeztetek></form><br>
<a href=index.php>Vissza a belépéshez</a></center>";
if ($visszajelez_emlk != "") {
print "<script>
alert(\"".$visszajelez_emlk."\")
</script>";
}
if ($visszajelez_emlk2 != "") {
print "<script>
alert(\"".$visszajelez_emlk2."\")
</script>";
}
if ($visszajelez_emlksiker != "") {
print "<script>
alert(\"".$visszajelez_emlksiker."\")
</script>";
}
if ($visszajelez_emlkkudarc != "") {
print "<script>
alert(\"".$visszajelez_emlkkudarc."\")
</script>";
}
A problémám az, hogy nem tudom hogyan kell kiolvastatni az adott emailcímhez tartozó jelszót a táblázatból. Ez --> mysql_query("SELECT * FROM reg WHERE jelszo='$regpas' ORDER BY emlekeztetek_mail"); Nekem egy butaságnak tűnik. A reg-ből kellene kiolvasni a jelszo-hoz tartozó jelszót, ami a begépelt $emlekeztetek_mail-hez tartozik.
A másik és szinte majdnem az egyik legfontosabb, hogy nem tudom hogyan kell a limitet beleprogramozni, tehát hogy egy adott mailcímhez pl. 3 napon belül egy emlékeztetőt lehessen kérni. Aki nekem ebben tudna segíteni és bele tudná pötyögni nekem az adott kódba a megoldást, azt nagyon megköszönném. A Mysql-el hadilábon állok, most tanulgatom...
Mielőtt kioktatnának...
Szóval a mysql_query(...) egy "resource"-t ad vissza, ami önmagában nem sok mindenre jó. Olyan, mint az ebédjegy. Meg nem eheted (bár miért ne), de tudsz vele kaját szerezni.
Probléma
Közben összedobtam úgy, ahogyan írtad, de még mindig nem működik :S - Nem írja ki a jelszót
Ráadásul, valamiért nem is az SMTP szerverről küldi ki a levelet, hanem a tárhelyéről. (Ott is hiba lehet :S)
A while ciklusban egy $row
while
ciklusban egy$row
változót hozol létre, de teljesen más változókat használsz a cikluson belül és kívül.És hogy kerül egy
<span>
a PHP kód közepére?Köszi, közben megnéztem és
Azt nem értem igazából, hogy amikor a while-ban lefutnak a sorok, akkor a $row['jelszo']; -t hogyan tudom kivenni. $row = mysql_fetch_assoc($result); , ez miért így van, ez visszahivatkozik az elejére, ahol csak simán az emailt néztük. :S
A $row = mysql_fetch_assoc
$row = mysql_fetch_assoc
egy egész sort ad vissza. Abban benne van az összes mező abból a sorból, amit lekérdeztél az adatbázisból.Array
Doksi
PHP 5.5-
Szóval ha most tanulod, akkor érdemesebb egy frissebb PHP könyvet beszerezni, amiben már a PDO-t használják.
De addig is a PHP hivatalos dokumentáció a te barátod. A sok példa miatt alap angol tudással is el lehet boldogulni vele (nekem sikerült anno).
Vagy találtam még egy ilyet: web programozás
THX