Autor Zpráva
monkeys
Profil *
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
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 *
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
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 *
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
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
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 *
juriad, Kajman:

Dakujem za informacie

M.

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:

0