Autor | Zpráva | ||
---|---|---|---|
hynais Profil |
#1 · Zasláno: 7. 9. 2008, 16:18:16
zdravím.. mam kód na to, když registrovaný uživatel zapomene heslo, tak aby se mu automaticky změnilo.. jenže ono se mu má to změněné odeslat na e-mail.. ono se neodešle ale změní se, takže uživatel pak neví svoje heslo a musí se registrovat znova.
co mám špatně? poradte prosím <?php require_once ('zahrnout/config.inc'); $titul_stranky = 'Obnova zapomenutého hesla'; include ('zahrnout/zahlavi.html'); if (isset($_POST['odeslat'])) { require_once ('mysql_spojit.php'); if (empty($_POST['uziv_jmeno'])) { $u = FALSE; echo '<p><font color="red" size="+1">Nebylo zadáno uživatelské jméno!</font></p>'; } else { $u = opravit_chyby($_POST['uziv_jmeno']); $dotaz = "SELECT id_uzivatele, email FROM uzivatele WHERE uziv_jmeno='$u'"; $vysledek = mysql_query($dotaz); $radek = mysql_fetch_array ($vysledek, MYSQL_NUM); if ($radek) { $id_u = $radek[0]; $email = $radek[1]; } else { echo '<p><font color="red" size="+1">Uživatelské jméno nenalezeno!</font></p>'; $u = FALSE; } } if ($u) { $h = substr (md5(uniqid(rand(),1)), 3, 10); $dotaz = "UPDATE uzivatele SET heslo=PASSWORD('$h') WHERE id_uzivatele=$id_u"; $vysledek = mysql_query ($dotaz); if (mysql_affected_rows() == 1) { $obsah_zpravy = "Vaše heslo pro přihlášení bylo dočasně změněno na '$h'. Přihlaste se prosím pomocí svého uživatelského jména a nového hesla. Pak můžete opět nastavit vlastní heslo."; mail ($email, 'Vaše dočasné heslo.', $obsah_zpravy, 'Od: H.Sturma@seznam.cz'); echo '<h3>Vaše heslo bylo změněno. Nyní se na registrovanou e-mailovou adresu odešle mail s dočasně změněným heslem. Jakmile se opět přihlásíte, heslo změňte klepnutím na odkaz "Obnovit heslo".</h3>'; include ('zahrnout/pata.html'); exit(); } else { $message = '<p><font color="red" size="+1">Vaše heslo nemohlo být změněno kvůli systémové chybě. Omlouváme se.</font></p>'; } mysql_close(); } else { echo '<p><font color="red" size="+1">Zkuste to znovu</font></p>'; } } ?> url na stránky: ZDE |
||
Alphard Profil |
#2 · Zasláno: 7. 9. 2008, 16:31:46
„mail ($email, 'Vaše dočasné heslo.', $obsah_zpravy, 'Od: H.Sturma@seznam.cz');“
Hlavička Od:? nechci tvrdit, že to nejde, ale dal bych tam From: žádnou chybu to nepíše? mail() bych považoval za nejrizikovější a provedl bych ho nejdříve, update až do podmínky po mail() krom toho, tohle láká k zneužití, lze lidem posílat hesla, která změnit nechtěli, mail by měl obsahovat nějaký odkaz s potvzením, jestli opravdu chtějí resetovat heslo |
||
hynais Profil |
#3 · Zasláno: 7. 9. 2008, 16:38:41 · Upravil/a: hynais
Alphard
aha.. takže mam zkopírovat od $dotaz až po affected_rows všechno pod $obsah_zpravy?? |
||
Alphard Profil |
#4 · Zasláno: 8. 9. 2008, 15:54:07
„aha.. takže mam zkopírovat od $dotaz až po affected_rows všechno pod $obsah_zpravy??“
to asi samo o sobě problém nevyřeší, psal jsem toho více, kromě jiného o hlavičce a chybových hláškách, přečtěte si to znovu |
||
nightfish Profil |
#5 · Zasláno: 8. 9. 2008, 16:19:56
„ono se neodešle“
podle čeho soudíš? pakliže se nevypíše žádná chybová hláška, jak dlouho jsi čekal, než jsi e-mail prohlásil za nedoručený/neodeslaný? |
||
Časová prodleva: 16 let
|
0