Autor | Zpráva | ||
---|---|---|---|
qteck Profil |
#1 · Zasláno: 12. 2. 2015, 11:06:21
ahoj,
tak mě napadlo. jakým způsobem řešíte toto? if(isset($_GET['postArticle'])) { $title = addslashes($_GET['title']); $content = addslashes($_GET['content']); $author = addslashes($_GET['author']); $place = addslashes($_GET['place']); $addArticle->insertArticle(array(':title' => $title, ':content' => $content, ':author' => $author, ':place' => $place)); } konkrétně pak ošetřování get proměnných. v tomhle případě by sedalo vytvořit jedno pol, vytvořit cyklus doplnit názvy proměnných podle polí. to by bylo fajn kdybych pracoval s těmahle proměnnýma jenom jednou a na jedné stránce. tak to samozřejmě není a tak se ještě ptám zdali to není lepší ošetřit globálně. S myšlenkou, aby se pořád dala volat superglobání proměnná ve své formě $_GET, jen čistá. Díky |
||
Dan Charousek Profil |
#2 · Zasláno: 12. 2. 2015, 11:17:43
Já osobně escapuju až na úrovni modelu a to tak, jak mi to daná databázová vrstva umožňujě. Tzn., že escapování bych v tvém případě přesunul až do metody insertArticle. Např.: v dibi bych to řešil asi takto:
function insertArticle($data) { /* data jsou očekávaná ve formátu: array("sloupecVDB" => "hodnota", "dalsiSloupec" => "hodnota"); */ dibi::query("INSERT INTO artcicles", $data); } Prosté, jednoduché. Podobně se to dá řešit pomocí Mysqli a prepare funkcích. |
||
Joker Profil |
qteck:
Tak v první řadě addslashes není správná funkce pro ošetření do databáze (ta správná záleží na typu databáze). „S myšlenkou, aby se pořád dala volat superglobání proměnná ve své formě $_GET, jen čistá.“ To mi nepřipadá jako dobrý nápad. Držel bych se poučky, že v $_GET jsou pořád původní data, skript se v tom nemá co vrtat a když je něco potřeba v jiném formátu, konvertuje se to do proměnné. Hodnoty z $_GET jsou prakticky vždycky potřeba ve více kontextech (abych v celém projektu vždycky hodnoty z GET jen zapisoval do databáze a nikdy nikde žádnou třeba nezobrazoval uživateli, nebo nezapisoval někam jinam, bude hodně výjimečný případ). Takže globální escapování všeho povede k nutnosti to někde zase „odescapovávat“, což je padlé na hlavu a nejspíš by to vedlo ke snaze o nějaké „inteligentní“ escapování/neescapování podle toho, na jaké jsem zrovna stránce. A to pak skončí naprostým schizofrenním chaosem, kdy nebude zřejmé, jestli v $_GET aktuálně mám escapovaná nebo neescapovaná data. |
||
Časová prodleva: 11 let
|
0