Autor | Zpráva | ||
---|---|---|---|
Milan1236000 Profil |
Zdravím,
při načtení stránky se ukazuje, že je chyba v označeném řádku, co je ale špatně? $vysledekhledani = $_GET['hledanytext']; <h2 class="modry_nadpis">Interpreti</h2> <ul> <?php $vysledek_interpreti = $pripojeni->query("SELECT * FROM `tabulka` WHERE Interpret LIKE '%$vysledekhledani%'"); while($zaznam_interpreti = $vysledek_interpreti->fetch_object()) { printf("<li class=\"odkazovy_seznam\"><a href=\"/%s\">%s</a></li>", $zaznam_interpreti->Url, $zaznam_interpreti->Interpret); } ?> </ul> <h2 class="modry_nadpis">Skladby</h2> <ul> <?php $vysledek_skladby = $pripojeni->query("SELECT * FROM `tabulka` WHERE Skladby LIKE '%$vysledekhledani%'"); while($zaznam_skladby = $vysledek_skladby->fetch_object()) { printf("<li class=\"odkazovy_seznam\"><a href=\"/%s\">%s</a></li>", $zaznam_skladby->Url, $zaznam_skladby->Interpret); } ?> </ul> Díky. |
||
Camo Profil |
Milan1236000:
No zrejme je ten dotaz chybný. To by si mal testovať, či ti volanie query() vracia platný výsledok než ho hodíš do while cyklu. Niečo ako if(!$vysledek_skladby){ echo $mysqli->error; } |
||
Milan1236000 Profil |
#3 · Zasláno: 17. 7. 2015, 00:23:02
Camo:
Tak chybu jsem našel. V databázi jsem měl jinak pojmenovaný sloupec. Teď ale mám problém. Po vypsání výsledku vyhledávání se zobrazí tohle. Jak docílit toho, aby se část 2 vypsala až za část 1? |
||
mimochodec Profil |
#4 · Zasláno: 17. 7. 2015, 00:26:47
Milan1236000:
To je věc nastylování. Pro řešení tohoto je php irelevantní, je potřeba odkaz na stránku, kde se to děje, případně to zkopíruj na http://kod.djpw.cz/ a uveď do toho stavu, který máš. |
||
Joker Profil |
#5 · Zasláno: 17. 7. 2015, 00:28:16
Milan1236000:
Bylo by dobré vstup ošetřit proti SQL injection, resp. aby to nespadlo, když dám vyhledat např. O'Connor. |
||
Milan1236000 Profil |
#6 · Zasláno: 17. 7. 2015, 00:47:12
mimochodec:
Áno, máš pravdu, bylo to stylem, měl jsem napevno nastavenou výšku <ul> .
Joker: O SQL injection jsem už slyšel, časem to tam taky asi přidám. Ale proč by to mělo spadnout při hledání O'Connor? |
||
Camo Profil |
Milan1236000:
Pretože znak ' v jazyku sql zanamené koniec reťazca takže všetko za ' bude vyhodnotené ako príkaz. Takže 'Sarah 'O Conor' spôsobí, že server si nebude vedieť vysvetliť, čo za príkaz je O Conor preto vyhodí chybu. Takže nie že to tam ASI pridáš ale pridáš to tam hneď. Lebo keď niekto zadá pri prihlasovaní meno injection' or 1=1 -- tak to spraví
SELECT * FROM users WHERE name = 'injection' OR 1=1 --' AND password = SHA1('heslo'). To znamená, že všetko za -- sa chápe ako komentár(pretože v sql znamená -- komentár). Takže sa ti tam prihlási bez hesla. Toto je sql injection a keďže si o tom už počul určite si zachytil, že je to nebezpečné.
|
||
Milan1236000 Profil |
#8 · Zasláno: 17. 7. 2015, 16:05:05
Camo:
Fajn, ošetřím to. Díky. |
||
Časová prodleva: 10 let
|
0