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į.
December 19th, 2006 at 6:48 pm
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ą?
December 22nd, 2006 at 1:26 am
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 