Stránka 1 z 3

Co je spatne na tomto SQL dotazu?

Napsal: 08 kvě 2013 17:19
od HellCoder

Kód: Vybrat vše

$data = mysql_fetch_array(mysql_query("SELECT * FROM uzivatele WHERE jmeno=".$_GET['jmeno']." AND heslo=".hash(md5,$_GET['heslo']) ));


Nevite nekdo co je na tom spatne? Diky moc
HellCoder

Re: Co je spatne na tomto SQL dotazu?

Napsal: 08 kvě 2013 17:24
od CZechBoY
cokoliv
nemusí existovat tabulka, v get můžou být zákeřné/prázdné hodnoty...

Re: Co je spatne na tomto SQL dotazu?

Napsal: 09 kvě 2013 21:44
od fu.cz
a co ta tečka?

Re: Co je spatne na tomto SQL dotazu?

Napsal: 09 kvě 2013 21:52
od CZechBoY
jaká tečka?
teď jsem si všiml že tam nemá apostrofy..

Re: Co je spatne na tomto SQL dotazu?

Napsal: 09 kvě 2013 22:15
od fu.cz
ty si odborník. On se ptal na sql dotaz ne na to co se děje dál.
Btw na co apostrof??? Pokud nemyslíš uvozovky a tu tečku.

Re: Co je spatne na tomto SQL dotazu?

Napsal: 09 kvě 2013 22:17
od CZechBoY
tečka spojuje stringy v php
apostrofy třeba na uvození textu, bez apostrofů můžeš vložit jen čísla a funkce

Re: Co je spatne na tomto SQL dotazu?

Napsal: 09 kvě 2013 22:25
od neudy
Ahoj,
zkusil bych tohle, nicméně si nejsem jist, jestli lze php funkci hash takto v sql využít.

Kód: Vybrat vše

$data = mysql_fetch_array(mysql_query("SELECT * FROM uzivatele WHERE jmeno='" . $_GET['jmeno'] . "' AND heslo='" . hash(md5,$_GET['heslo']) . "' "));


Navíc využívání metody GET pro heslo není zrovna bezpečné(http://cs.wikipedia.org/wiki/GET). Já bych navrhoval změnu na toto:

Kód: Vybrat vše

$data = mysql_fetch_array(mysql_query("SELECT * FROM uzivatele WHERE jmeno='" . $_POST['jmeno'] . "' AND heslo=PASSWORD('" . $_POST[heslo] . "') "));

Re: Co je spatne na tomto SQL dotazu?

Napsal: 09 kvě 2013 22:29
od CZechBoY
neudy: čim sis pomohl, že místo GET si použil POST?
tu funkci musíš escapovat funkcí mysql_real_escape_string v případě řetězce a v případě celého čísla přes (int)$var, v případě desetinného čísla (float)$var

proč by nešlo použít funkci hash? vrací řetězec, takže je to možné

Re: Co je spatne na tomto SQL dotazu?

Napsal: 09 kvě 2013 22:34
od neudy
Použít metodu GET pro přenos hesla je dle mě chyba viz http://php.vrana.cz/http-metody-get-a-post.php. Neříkám, že to hash nebude fungovat. Já jen navrhnul co znám a používám.

Re: Co je spatne na tomto SQL dotazu?

Napsal: 09 kvě 2013 22:36
od CZechBoY
jasně protože GET se uchovává v historii se všemi parametry
já ten dotaz nestudoval co tam odesílá, ani nenapsal, že to je formulář na přihlášení, takže to můžou být fiktivní jména proměnných

Re: Co je spatne na tomto SQL dotazu?

Napsal: 09 kvě 2013 22:43
od fu.cz
jee konečně někdo pochopil tu tečku ;) Kromě toho, apostrof a uvozovky vedle sebe sou ok?

Re: Co je spatne na tomto SQL dotazu?

Napsal: 09 kvě 2013 22:47
od CZechBoY
ta tečka nemusí být oddělené mezerou či jiným bílým znakem, je jen dobrá konvence psaní kodu
tohle je postupný skládání dotazu, ikdyž úplně debilní :D , takže apostrofy se pošlou v SQL příkazu, zatímco uvozovky uvozují řetězec v PHP