Autor Zpráva
GeneralDv
Profil
Zdravím a to zase s dalším problémem :-( při přihlašování nebo registraci mi de/kódování šifry md5 problémy nedělá a tenhle to mam 'stejný', nechápu proč mi to posílá úplnej nesmysl ,,, script má odesílat email se zapomenutym heslem..

<?php
if (isset($_SESSION["prihlasen"]) and @$_SESSION["prihlasen"]==1){
    exit;
}
$zobr = true;
if (isset($_POST["email"]) or trim($_POST["email"])!=""){
    $_POST["email"] = trim(mysql_real_escape_string($_POST["email"]));
	
    $sql = "select email,heslo from uzivatele where email='".$_POST["email"]."'";
    $vysledek = mysql_num_rows(mysql_query($sql));
	
	if ($vysledek!=1){
	    echo('<div class="red-alert">Tento email není v naší databázi !</div>');
	}else{
	    $vyber = mysql_fetch_array(mysql_query($sql));
		$heslo = md5($vyber["heslo"]);
		
		$headers = "Content-Type: text/html; charset=utf-8\n";
        $headers .= "From: ".$nastaveni["email"]."\r\n"; 
		$zprava = 'Pravděpodobně Vy jste si vyžádal(a) odeslání zapomenutého hesla na email, pokud se tak nestalo, zprávu ignorujte.<br><br><br><strong>Heslo: </strong>'.$heslo.'<br><br><br>Portál „XXX" - <a href="http://XXX/">X</a>';
		$odeslat = mail($vyber["email"],"Zapomenuté heslo",$zprava,$headers);
	    
		if ($odeslat==true){
		    echo('<div class="green-alert">Email s heslem byl úspěšně odeslán !</div>');
			$zobr = false;
		}else{
		    echo('<div class="red-alert">Email s heslem se nepodařilo odeslat, prosím opakujte !</div>');
		}
	}
}
if ($zobr==true){
    echo('
	<form action="" method="post">
	Email: <input type="text" name="email" value="" size="28"> <input type="submit" value="Odeslat heslo">
	</form>
	');
}
?>
tiso
Profil
GeneralDv: na mail si posielaš md5 hash hesla, ktoré máš uložené v databáze.
jso
Profil *
GeneralDv
ano, jak říká tiso. Standardně se to řeší vytvořením náhodně vygenerovaného hesla (hash se opět uloží do db) a uživateli na mail se pošle heslo před hashem.
GeneralDv
Profil
Nějak sem to nepochopil... Nevíte teda proč mi to
$heslo = md5($vyber["heslo"]);
neuloží to $heslo heslo nikoliv hash ? Jaktože mi registrace a přihlašování v tom případě funguje ? Ten samej problém sem měl s hashovánim soukromejch zpráv, nemůžu to pochopit.. (nevyřešil se, ale to je teď jedno)
MCKAY
Profil
Mám takový dojem že hash se pomocí funkce md5 nevrátí do původní podoby nebo ano? V tom bude asi chyba
GeneralDv
Profil
Mám takový dojem že hash se pomocí funkce md5 nevrátí do původní podoby nebo ano? V tom bude asi chyba
V tom případě nechápu jaktože vůbec funguje přihlášení a to je stejný.. :O
jso
Profil *
GeneralDv
md5 je jednocestná funkce. Takže v reálném čase nelze zjistit původní hodnotu či pravděpodobnost, že jiné heslo zajistí stejný hash je velmi malá. Ověřování se dělá tak, že v db je hash hesla. Uživatel zadá své heslo, které se zahashuje a tyto hashe se porovnají. Rovnají-li se, pak je uživatel přihlášen.
pl
Profil *
GeneralDv
je to jednoduche pri prihlaseni se neporovnava heslo ale jeho hash. napises do formulare normalne heslo, formular odesles pak php zeni textovou podobu hesla na hash a ten porovna s hashem ulozenym v databazi.

stim je spojeny tvuj problem...z hashe normalnim zpusobem zpet heslo jiz nedostanes. proto ho take nikomu nemuzes poslat. resi se to tak jak ti psali nahore....vygenerujes nove heslo posles ho na mail a do databaze ulozis jeho hash.
Werewolf
Profil
GeneralDv:
Vyřešíš to tak, že při odesílání zapomenutého hesla vygeneruješ nové místo zjištění starého.
drasha
Profil
Vyřešíš to tak, že při odesílání zapomenutého hesla vygeneruješ nové místo zjištění starého.
Tohle se tady neřeší :)


//registrace - ukladani hesla do DB

$pw = sha1( $pw ); // md5( $pw ) chces-li
query();

//prihlasovani 

$uzivatel = query(" 'SELECT * FROM uzivatele WHERE jmeno='$jmeno' ")->fetch();
$pw = sha1( $pw ); // zahasujes heslo
if( IsSet( $uzivatel ) ){
// zkontrolujes, jestli je hash stejny jako hash co mas v DB
if( $uzivatel['heslo'] == '$pw' ){
     ...
}else echo 'heslo neni spravne';
}else echo 'uzivatel neexistuje';


A kdyz uz heslo jednou zahasujes, je temer nemozne ho rozhasovat(jinak by to nebyl hash ze :))
$pw = md5( $heslo );
$heslo != md5( $pw );
jso
Profil *
drasha
„Vyřešíš to tak, že při odesílání zapomenutého hesla vygeneruješ nové místo zjištění starého.“
Tohle se tady neřeší :)

řeší neřeší. Dotaz zněl na registraci, přihlašování a posílání e-mailu o obnově hesla.
GeneralDv
Profil
Díky za odpovědi. drasha nepochopil sem :D ale teď už je problém vyřešenej, jak ste psali abych udělal generování new hesel - už sem to udělal ...

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: