Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: mysql_result error

Aktivity
Avatar
HAPPY DAY
Člen
Avatar
HAPPY DAY:17.9.2012 16:20

ahoj mám problém. jde o tohle:
Warning: mysql_result() expects parameter 1 to be resource, boolean given in /data/web/vir­tuals/28888/vir­tual/www/login­.php on line 4

a kód na řádku 4 je:
$pocetzaznamu = mysql_result(mys­ql_query("SELECT COUNT(*) FROM users WHERE usermail = '".$_POST['ma­il']."' AND userpass = '".sha1($_POS­T["pass"])."'"), 0);

co je prosím za chybu předtím to fungovalo. potom jsem jen přidal CSS a hned to tohle vypsalo

Odpovědět
17.9.2012 16:20
Kdo pozdě chodí, sám sobě škodí (AUTOR: já)
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na HAPPY DAY
David Hartinger:17.9.2012 16:29

Ta query ti vrátila FALSE, čili se neprovedla a nelze z ní načíst pole. Otázka je proč, ale to já ti asi neřeknu. Zkus si vypsat ten příkaz a vložit ho do MyPHPAdmina. Možná máš vypnutou databázi, možná je tam překlep, neexistuje tabulka...

2 připomínky:

  1. Neescapuješ, to je velmi nebezpečné.
  2. mysql ovladač je deprecated,
Nahoru Odpovědět
17.9.2012 16:29
You are the greatest project you will ever work on.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na HAPPY DAY
David Hartinger:17.9.2012 16:29

Jo a 3. připomínka, ten hash bez soli je také nedostačující.

Nahoru Odpovědět
17.9.2012 16:29
You are the greatest project you will ever work on.
Avatar
HAPPY DAY
Člen
Avatar
HAPPY DAY:17.9.2012 17:18

už jsem to vyřešil, asi to byla chyba editoru, což se mi občas stává a potom jsem se špatně připojil k databázi takže OK vše funguje

Nahoru Odpovědět
17.9.2012 17:18
Kdo pozdě chodí, sám sobě škodí (AUTOR: já)
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na HAPPY DAY
David Hartinger:17.9.2012 17:26

Pokud chceš být adminem webu jen ty, tak zapracuj mé připomínky.

Nahoru Odpovědět
17.9.2012 17:26
You are the greatest project you will ever work on.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:17.9.2012 21:13

Také koukám, že si Neaktivní uživatel koleduje o SQL injection.

Nahoru Odpovědět
17.9.2012 21:13
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
HAPPY DAY
Člen
Avatar
HAPPY DAY:18.9.2012 12:47

No z toho co jsem si přečetl mi přijde, že nebezpečí hrozí jen když používám $_GET ale já používám $_POST

Nahoru Odpovědět
18.9.2012 12:47
Kdo pozdě chodí, sám sobě škodí (AUTOR: já)
Avatar
Kit
Tvůrce
Avatar
Odpovídá na HAPPY DAY
Kit:18.9.2012 13:12

Docela zábavné čtení. Je úplně jedno, jestli použiješ GET nebo POST. Injection se dá udělat do obojího.

Nahoru Odpovědět
18.9.2012 13:12
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Neaktivní uživatel:22.9.2012 20:58

njn,to víš no,je chytřejší než ty....:D :D TO přece není možný udělat injection přes POST :D

btw. [me|]321[/me|­],pošli odkaz na ten web,myslím že ti rádi předvedeme ukázku :D :D

Nahoru Odpovědět
22.9.2012 20:58
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:22.9.2012 21:11

Ale jinak je v pořádku, že to posílá přes POST. Jen je to nutné ošetřit před vložením do SQL a po přijetí udělat přesměrování stránky.

Také je důležité v databázi nemít uživatelská hesla, ale jen jejich hashe. Pokud možno osolené.

Nahoru Odpovědět
22.9.2012 21:11
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Neaktivní uživatel:22.9.2012 21:13

Jj,já také používám post... Escapuji vše,i položky v SELECTu

....hesla ? hashe ? osolit ? :D

Nahoru Odpovědět
22.9.2012 21:13
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Neaktivní uživatel:22.9.2012 21:13

Vím co je heslo ale ten zbytek nevím :D

Nahoru Odpovědět
22.9.2012 21:13
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:22.9.2012 21:21

Osobně neescapuji nic, používám prepared statements. Tím pro mne escapování skončilo. Takové SQL dotazy jsou mnohem hezčí a přehlednější.

Určitě jsi slyšel o funkcích md5(), sha1(), sha256() apod. K heslu přidáš nějaký řetězec (sůl), zašifruješ vybranou funkcí (hash) a do databáze jen uložíš výsledek (string). Takové heslo není současnými prostředky možné dešifrovat.

Nahoru Odpovědět
22.9.2012 21:21
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Neaktivní uživatel:22.9.2012 21:23

a když se někdo bude chtít přihlásit tak jak to dešifruje ? :D

Nahoru Odpovědět
22.9.2012 21:23
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:22.9.2012 21:25

Nijak. Nejde to. Heslo, které uživatel zadá, se zašifruje stejným postupem a porovnají se výsledky. Pokud jsou totožné, je to OK.

Je to standardní osvědčený postup používaný v profesionálních aplikacích.

Editováno 22.9.2012 21:29
Nahoru Odpovědět
22.9.2012 21:25
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Nahoru Odpovědět
22.9.2012 21:26
Neaktivní uživatelský účet
Avatar
Nahoru Odpovědět
22.9.2012 21:26
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:22.9.2012 22:06

Teď koukám, že ten hash (i když bez soli) tam už je. No co, přehlédl jsem se.

Nahoru Odpovědět
22.9.2012 22:06
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 18 zpráv z 18.