Autor Zpráva
laijk
Profil
-prihlasovací skript:
$login = $_POST['login'];
$heslo = sha1($_POST['heslo']);

$result = mysql_query("SELECT user_password FROM users WHERE user_login='$login'");
$row = mysql_fetch_row($result);

if($heslo == $row[0])
{
    $_SESSION['prihlaseny'] = 'ano';
}
else
{
    echo "Zadali ste neplatné meno alebo heslo!";
}
?>


-keď sa prihlásim podľa správneho mena a hesla vypíše toto:
Warning: mysql_fetch_row() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\www\login.php on line 6
Zadali ste neplatné meno alebo heslo!
abc
Profil
Viz zdejší FAQ - nejspíš chybný dotaz do DB
panther
Profil
laijk:
keď sa prihlásim podľa správneho mena a hesla vypíše toto:
ne, to se píše, protože máš chybu v SQL dotaze, proměná result vrací false. Vypiš si mysql_error(). Pokud to je v jednom souboru společně s formulářem, $_POST může být prázdný, resp. bude, před odesláním formuláře.

On celkově způsob, který jsi zvolil, je nešťastný. Pro neporovnáváš heslo přímo v SQL dotaze společně se jménem? Navíc nemáš proměnné v dotaze ošetřené, konkrétně mysql_real_escape_string v tomto případě.
laijk
Profil
EDIT!


$meno = $_POST['meno'];
$heslo = sha1($_POST['heslo']);

//keď som tu vypísal heslo tak bolo v poriadku, heslo mám zahashované a po SQL dotaze ho nevie nájsť, netreba dať niekde do SQL dotazu sha1?? pretože keď som vypísal result tak bol prázdny, zrejme tento dotaz porovnáva zahashované heslo s nezahashovaným

$result = mysql_query("SELECT user_password FROM users WHERE user_login = '" , mysql_real_escape_string($meno) , "' 
            AND user_password = '" , mysql_real_escape_string($heslo), "'");
panther
Profil
laijk:
máš chybu v základní syntaxi PHP, doporučuji doučit se jí.

zrejme tento dotaz porovnáva zahashované heslo s nezahashovaným
ne, porovnává proměnnou obsahující hash s hashem s DB.

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: