magic quotes normalization

Kaip žinia, PHP6, kuris jau nebe už kalnų, nebebus magic_quotes nustatymo, kurio įjungimas “On” reikšdavo, kad visos duomenų, perduodamų GET, POST ar COOKIE masyvais yra eskeipinami slešais “\”. Toks sumanymas buvo apsaugoti programuotojus nuo sql injectionų, kurie dar ir dabar gan populiarūs plačiajame internete (”kelkit programuotojams algas, nes kuo mažiau mokate, tuo greičiau lūžta Jūsų puslapis” ;)).

Kadangi deja, šiandien vis dar dirbame ir su senosiomis PHP4 versijomis, ir su skirtingų konfigūracijų PHP, susimislijau būdą kaip gražiai ir universaliai apeiti magic_quotes. Manau ir Jums visai pravers, jei jau skaitote šį blogą. Trumpi komentarai: į tai, kas vadinama “request” mano manymu neturi patekti COOKIES, todėl naudojame tik POST ir GET. Su COOKIES ir FILES elkitės kaip norite, kolkas mano klasėj jie neapdirbti :) Paprastai prasukti foreach visam masyvui negaliu, nes kartais tenka perdavinėt ir dvimačius ar net trimačius masyvus, o array_walk_recursive, kaip žinia yra rekursinė funkcija, kuri su tam tikrais vartotojo įsikišimais gali ir užlaužti serverį, jei naudojama netinkamai. Pvz. jeigu naudosime array_walk_recursive ir “hakeris” sugalvos papost’inti serveriui labai ilgamatį masyvą, pvz. foo[][][][][]…, PHP kintamųjų stekui baigsis atmintis ir viskas gali baigtis crashu. Masyvo dimensiją galite lengvai pasikoreguoti pakeitę $array_level.

Taigi, galite peržvelgti kaip atrodo klasė čia, o parsisiųsti patį sourcą čia. Ačiū už dėmesį.

2 Responses to “magic quotes normalization”

  1. enc Says:

    pas tave klasėje susipina OO ir procedūrinis programavimo stiliai. negeriau būtų iškelti apibrėžtą f-ją į klasę ir po to per array walk paduoti klasės bei metodo pavadinimus kaip masyvą?

  2. medutis Says:

    tavo tiesa, kodas nėra idealiai tvarkingas. Kita vertus, ta funkcija reikalinga tik konstruktoriaus vykdymo metu, daugiau ji neiškviečiama, taigi gal ir visai nieko, jei jis nebus eilinis klasės metodas.. :) Šiaip ar taip, bus pataisymų šiai klasei, version 2 :)

Leave a Reply