| Autor | Zpráva | ||
|---|---|---|---|
| laijk Profil |
#1 · Zasláno: 11. 8. 2012, 13:02:35
-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 |
#2 · Zasláno: 11. 8. 2012, 13:09:18
Viz zdejší FAQ - nejspíš chybný dotaz do DB
|
||
| panther Profil |
#3 · Zasláno: 11. 8. 2012, 13:11:20
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 |
#5 · Zasláno: 11. 8. 2012, 17:22:37
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. |
||
|
Časová prodleva: 14 let
|
|||
0