Spracovávame formulárové dáta
CakePHP obsahuje automatickú ochranu proti SQL injection a vo väčšine prípadov nemusíme špeciálne spracovávať formulárové dáta. Avšak určite nastane taká situácia, v ktorej budeme potrebovať formulárové dáta nejakým spôsobom upraviť, CakePHP nám ponúka niekoľko preddefinovaných metód. V článku si ich predstavíme.
V článku budeme hovoriť o situáciách, kedy potrebujem nejakým spôsobom upraviť vstupné dáta od užívateľa. Môže to byť napríklad zakázanie html tagov vo vkladaných dátach, povolenie len určitých tagov alebo ochrana proti nebezpečným znakom. CakePHP nám ponúka niekoľko metód a my sa na ne bližšie pozrieme.
V CakePHP sa o všetku prácu súvisiacu so spomínanými činnosťami stará trieda Sanitize Takže prvým krokom, ktorý musíme urobiť, je danú triedu importovať
App::import('Sanitize');
Následne môžeme používať metódy z tejto triedy.
paranoid(string $string, array $allowedChars)
Táto funkcia odstráni všetky znaky zo vstupného reťazca. Má však aj voliteľný druhý parameter, ktorým môžeme určiť, ktoré znaky má vo vstupnom reťazci ponechať.
$badString = ";:<script><html>< // >@@#";
echo Sanitize::paranoid($badString);
// output: scripthtml
echo Sanitize::paranoid($badString, array(' ', '@'));
// output: scripthtml @@
escape(string $string, string $connection)
Táto funkcia slúži na ošetrenie reťazcov vstupujúcich do SQL dotazu. Druhým voliteľným parametrom môžeme určiť pre ktorý typ databázové spojenie (podľa definovaných spojení v app/database.php) bude daný proces aplikovaný.
$badString = "'input'";
echo Sanitize::escape($badString);
// output: \'input\'
html(string $string, boolean $remove = false)
Táto funkcia slúži na prevod rôznych nebezpečných znakov a html na ich ekvivalentné entity. Má voliteľný druhý parameter, ktorý keď nastavíme na hodnotu true vstupný reťazec sa nebude prevádzať na entity, ale vypíše sa iba jednoduchá hláška.
$badString = '<font size="99" color="#FF0000">HEY</font><script>...</script>';
echo Sanitize::html($badString);
// output: <font size="99" color="#FF0000">HEY</font><script>...</script>
echo Sanitize::html($badString, true);
// output: HEY...
clean(mixed $data, mixed $options)
Táto funkcia slúži ako kompletný "čistič. Ako prvý parameter príjma vstupný strig alebo celé pole (napr. $this->data), ako druhý parameter prijíma filter, ktorý má byť použitý pre spracovanie dát. Definované filtre sú odd_spaces, encode, dollar, carriage, unicode, escape, backslash. Zároveň je aj kombináciou vyššie uvedených metód.
Na záver ešte spomeniem niekoľko špecializovaných funkcií, ktoré nebudeme zrejme využívať veľmi často
stripImages($str)
Zo vstupného reťazca odstráni html tagy obrázkov
$badString = "<img src='image.jpg'> test string";
echo Sanitize::stripImages($badString);
// output: test string
stripWhitespace($str)
Pracuje rovnako ako funkcia stripImages avšak s tým rozdielom, že zo vstupného reťazca odstráni tzv. biele znaky (napr. tabulátor, zalomenie riadku)
stripScripts($str)
Opäť funkcia ktorá pracuje na rovnakom princípe, avšak odstráni zo vstupného reťazca html tagy skriptov a css.
stripAll($str)
Táto funkcia je kombináciou metód stripImages($str), stripWhitespace($str), stripWhitespace($str) a postupne volá tieto metódy na vstupný reťazec.
Týmto je náš článok u konca. V kratkosti som sa snažil predstaviť jednoduché avšak o to dôležitejšie funkcie pre spracovanie vstupných dát. Rád privítam vaše námety a pripomienky v diskusii k článku.
Súvisiace články
-
Kategórie
- Tipy a triky (28)
- Články (8)
- Fantom CMS (4)
- Zábava (2)
- Začíname s CakePHP (6)
-
Najčítanejšie články
-
Novinky
-
Seriál o CakePHP na www.debug.sk
15. 10. 2008
Od 7. októbra vychádza nový seriál o CakePHP na serveri zameranom na programovanie s názvom Debug.sk Autorom seriálu je autor tohto webu a kto by mal záujem, môžete daný seriál podporiť jeho prečítaním.
-
-
Nálepky
-
Nedávne komentáre
-
Rss kanály

Komentáre k článku
Nový komentár