Autor Zpráva
hynais
Profil
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
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
Alphard
aha.. takže mam zkopírovat od $dotaz až po affected_rows všechno pod $obsah_zpravy??
Alphard
Profil
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
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ý?

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: