Autor | Zpráva | ||
---|---|---|---|
monkeys Profil * |
#1 · Zasláno: 11. 2. 2012, 00:58:21
neviem co robim zle ale neda sa mi prihlasit cez tento dotaz:
$sql = mysql_query ("SELECT id_uzivatela, spolocnost, oslovenie,meno,priezvisko FROM uzivatelia WHERE uziv_meno='$u' AND heslo=PASSWORD('$h') "); ked vymazem cast od AND teda ostane len uzivatelske meno tak to funguje prihlasim sa, ale akonahle tam dam heslo nejde to. V DB mam stlpec heslo ako VARCHAR dakujem M. |
||
Keeehi Profil |
#2 · Zasláno: 11. 2. 2012, 01:26:27
monkeys:
A když se podíváš do databáze, dá se to heslo normálně přečíst, nebo je tam nějaká změť znaků? A když $sql = mysql_query nahradíš echo , vypíše se to, co předpokládáš?
|
||
monkeys Profil * |
#3 · Zasláno: 11. 2. 2012, 13:41:59
Keeehi:
Heslo v databazi je ulozene napr takto *3A2F1BE8FB3D985 prikaz echo mi nevyhodi nic ani chybu ani vysledok. cela podmienka vyzera takto: if ( $um && $h) { $sql=mysql_query( "SELECT id_uzivatela, spolocnost, oslovenie,meno,priezvisko FROM uzivatelia WHERE uziv_meno='$um' AND heslo=PASSWORD('$h')"); $riadok = mysql_fetch_array ($sql, MYSQL_NUM); if ($riadok){ $_SESSION['spolocnost'] = $riadok[1]; $_SESSION['oslovenie'] = $riadok[2]; $_SESSION['meno'] = $riadok[3]; $_SESSION['priezvisko'] = $riadok[4]; $_SESSION['id_uzivatela'] = $riadok[0]; ob_end_clean(); header ("Location: .dirname($_SERVER['PHP_SELF]http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']). "/index.php"); exit(); }else{ header("Location: registracia.php"); }} |
||
Hando Profil |
#4 · Zasláno: 11. 2. 2012, 14:17:17
A co zkusit použít něco jiného, než mysql password()? Možností je plno. Sice to neodpovídá přímo na otázku, ale řešení by to mělo být taky. :)
Bez té hvězdičky na začátku hesla to taky nefunguje? Dopiš si tam mysql_error(), třeba získáš víc informací. Jinak k password()... |
||
monkeys Profil * |
#5 · Zasláno: 11. 2. 2012, 15:14:09 · Upravil/a: monkeys
hmm no skusam teraz heslo cez md5 ulozi ho v pohode ale pri tom prihlasovani som zistil ze generuje dlhsi retazec ako by mal:
Teda do DB sa mi ulozi retazec o dlzke 16 znakov ( VARCHAR 16 ), ale pri prihlasovani a porovnani hesla z prihlasovacieho formularu a hesla v DB vznika tento problem: ukazka: heslo z registracie v DB vyhenerovane cez md5: 1d028378e12ca6bd heslo vygenerovane cez prihlasovaci formular: 1d028378e12ca6bdafa3b8b21bc5a9ea zhoda tam je po 16 znak ale dalej to je uz neaky blud preto to asi nefungovalo ani pri tom povodnom PASSWORD - e. ako to osetrit? M. Vyriesil som to cez $h = substr(md5($_POST['hes']), 0,16); a funguje to.
Ale zaujimalo by ma preco to generuje jedno tak druhe inac Dik M. |
||
juriad Profil |
#6 · Zasláno: 11. 2. 2012, 16:38:53
právě, že v databázi máš sloupec VARCHAR 16; změň to na VARCHAR 32 a uloží se ti celé heslo (existující budeš muset změnit)
číslo u VARCHAR omezí počet znaků, které je možné do sloupce v databázi uložit, pro md5 je třeba 32 znaků |
||
Kajman Profil |
#7 · Zasláno: 11. 2. 2012, 17:27:41
Ta funkce password je pro interní potřeby mysql a může se během času měnit - tuším se uplatnilo při přechodu na verzi 5. Do logů serveru se dostanou původní hesla. Nedoporučují to používat ve svých aplikacích.
Verze s md5 v php je lepší, ale je dobré přidat nějakou sůl. |
||
monkeys Profil * |
#8 · Zasláno: 11. 2. 2012, 17:36:35
juriad, Kajman:
Dakujem za informacie M. |
||
Časová prodleva: 13 let
|
0