21. září bude sraz! Od 18.00 v restauraci Tradice v Praze u Anděla
Autor Zpráva
qteck
Profil
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
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.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0