Diskuze: Bezpečnosť
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 6 zpráv z 6.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj, jasně, že existuje. Používá se na to PDO. Zde máš ukázku, jak se zadává dotaz.
$sth = $dbh->prepare('SELECT name, colour, calories FROM fruit WHERE calories < ? AND colour = ?');
$sth->execute(array(150, 'red'));
Nejprve si připravíš dotaz, kde na místo vkládaných dat vložíš otazníky. Poté v dalším dotaze místo nich dosadíš skutečné hodnoty, které se ošetří...
PDO je nejrozšířenější ovladač, tak se ho určitě nauč používat
ked tomu spravne rozumiem teda ta funkcia execute osetri sama vstup automaticky? teda by som tam mohol dat kludne napriklad $_GET["id"] a co tak by hodnota ktoru tam vlozim neexistovala teda bolo by prv nutne zistit ci hodnota je zadana pomocou isset alebo aj nato ma paky PDO?
Ne, to neumí. Nejprve si musíš ověřit, zda proměnná existuje, jinak ti to vyhodí notice. Naštěstí by nemělo dojít k žádné bezpečnostní chybě, protože by se místo té tvé neexistující proměnné dosadilo null a vrátil by se nulový počet řádků z databáze (protože by neexistoval žádný řádek s ID = NULL).
Jak psal Neaktivní uživatel. Existenci dat či jejich správnost si musíš ověřit sám pomocí podmínek. PDO ti jen zajistí bezpečnost, zabrání SQL injection a podobným.
Ale tu logicky mi vznikne problem napriklad mam pocet parameterov co pride zo
stranky klienta 3 id1 , id2, id3 tak logicky nemozoem vytvorit dotaz to prepare
z tromi otazniknmi lebo neviem ci tam budu realne aj tri parametre, ako by sa
riesilo nieco take? if(isset($id1)) prepare 1 otaznik?
if(isset($id1) && isset($id2))prepare 2 otazniky? to mi pride trocha
zvlastne? co by sa udialo ak by som tam mal tri otazniky v tom prepare ale
hodnoty by som tam dal iba existujuce, nehadzalo by to chybu ze pocet
ocakavanych parametrov ma byt 3?
Zobrazeno 6 zpráv z 6.