Kompiuteriai, Programinė įranga
PHP pasaulio kintamasis funkcijos. Padaryti pasaulinį kintamąjį PHP
Sukurti visą svetainę, kuri turi platų funkcionalumą, ką reikia žinoti labai daug. Bet ką gali padaryti jį tikrai unikalus - jis yra PHP. Pasaulinė kintamasis programavimo kalba yra nenaudojama labai dažnai, bet kartais žinoti, kaip jis veikia, kartais tai būtina. Tai yra tai, ką jis yra ir kaip tai veikia, mes ketiname daryti šiame straipsnyje tyrimas.
apimtis
Pagal nutylėjimą, jie apsiriboja vietos funkcijai taikymo sritį. Ir kaip padaryti, kad kintamas matyti failus savo ribas, kurios galėtų daugiau ir naudoti? Siekiant šio tikslo, ir yra numatyta PHP globalių kintamųjų.
Raktažodis "Global"
Po tokio nurodymo vykdymo, duomenys bus galima dirbti su bet kokio failo. Jei kažkur yra nuorodos į šį kintamąjį, programa bus visada atkreipti dėmesį į pasaulinę versija.
Kodėl toks keistas kalba? Tas faktas, kad tuo pačiu metu gali būti vietiniai versijos. Bet jie bus laisvi tik tų bylų, kuriose paskelbta. Ir visa kita veiks globalių kintamųjų PHP klasę. Todėl jūs turite būti atsargūs. Ir tai nebuvo jokių abejonių, čia pavyzdys, kaip jie atrodo iš pavyzdžių: Global a.
Nes jei vienas failas turės prieigą prie daugelio kintamųjų, tai sukels jiems prieštarauti. Bet mes negalime pasakyti tikrai - vietos ar pasaulio kintamasis skaityti ar apskritai nepavyksta. Taigi, jei ji yra registruoti funkcija, tai neturėtų būti problema. Bet iš už jos ribų kintamojo naudojimas, kad būtų problemiška. Todėl į kodą, reikalingą atidžiai stebėti ir įsitikinti, rengimo struktūra, kuri niekur nėra net būtina į minėtą konfliktą atsirado.
Kitas įrašymo įsikūnijimas
Built / superglobals
Kiekvienoje programavimo kalba yra keletas pavadinimų, kurie frachtuojamas kai kurias savo funkcijas. Todėl, siekiant sukurti PHP globalių kintamųjų to paties pavadinimo neveiks.
Ši programavimo kalba turi savo charakteristikas. Taigi, svarbu, kad iš anksto kintamieji čia nėra įdiegti "Super", tai yra, jie yra ne visose vietose. Kaip aš galiu ją išspręsti? Norėdami iš anksto kintamieji buvo galima tam tikru vietovėje, jis turi būti pripažintas taip :. Global «kintamasis" Atrodo, kad tas pats kaip ir anksčiau sakė, tiesa? Tai tiesa, bet ne visai. Pažvelkime jau "kovoja" pavyzdys:
- Global $ HTTP_POST_VARS;
- echo $ HTTP_POST_VARS [ 'vardas'].
Jūs jaučiatės tarp jų skirtumas? Atkreipkite dėmesį, kad PHP globalių kintamųjų, nebūtinai turi būti naudojama per funkcija. Jis netgi gali būti dedamas į bylą, kuri yra įtraukta į jį.
Nuorodos ir saugumas
Kaip matote, PHP sukurti pasaulinį kintamąjį nėra problema. Bet ar yra kokių nors ypatingų santykinės nuorodos? Taip, gali būti netikėtas elgesys, kai naudojant Global. Bet prieš tai, kad šiek tiek backstory.
Versijoje 4.2.0 direktyva pagal nutylėjimą register_globals pasikeitė On-valstybės išjungtas. Daugumai vartotojų, tai nėra labai svarbu, bet veltui. Galų gale, tai tiesiogiai daro įtaką išsivysčiusių produkto saugumą. Jei jums reikia padaryti kintamasis pasaulio, PHP direktyva dėl šio parametro nėra tiesiogiai paveikta. Tačiau neteisingas naudojimas gali jau sukurti precedentai saugumą.
Taigi, jei register_globals įjungtas, prieš raštiško kodo vykdymo inicializuoti skirtingus kintamuosius, kurie yra reikalingi, pavyzdžiui, siųsti HTML formas. Todėl buvo nuspręsta, kad jį išjungtumėte.
Kodėl šios direktyvos PHP pasaulio kintamasis narė yra skolinga daug? Faktas yra tai, kad kai kūrėjai valstybė ne visada tikrai gali patys atsakyti į kur jis atėjo iš klausimą. Viena vertus, tai yra lengviau rašyti kodą. Bet kita vertus - tai saugumo rizikos. Todėl, siekiant išvengti klaidų, taip pat duomenis maišymo ir direktyva buvo išjungtas.
Dabar pažiūrėkime ne / Saugos kodas, taip pat, kaip nustatyti atvejai, kai pasaulinė PHP kintamojo skelbimas lydi klastoti duomenis pastangomis. Tai būtina norint sukurti ne tik gražus, bet taip pat nuolat dirba svetaines, kurios neturi sutrūkti pirmoji prieinama asmenį.
kenksmingą kodą
Leiskite nustatyti, kad kintamasis yra tiesa tiems, kurie buvo įgalioti:
jei (authenticate_user ()) {
$ Įgalioti = true;
}
if ($ Įgalioti) {
apima "/highly/sensitive/data.php";
}
Šioje būsenoje, kintamasis gali būti nustatyti automatiškai. Atsižvelgiant į tai, kad duomenys gali būti tiesiog pakeisti, o nuo jų kilmės šaltinis nenustatytas, tada kiekvienas gali perduoti tokį testą ir apsimesti kažkas. Jei pageidaujate, užpuolikas (arba tiesiog smalsu, bet nepatyręs asmuo) gali būti sumažėjusi, mūsų logika.
Jei mes pakeisti direktyvos vertę, šis kodas dirbs teisingai, nes mes reikalingi. Bet iniciacijos kintamųjų yra ne tik geras tonas programavimo, bet taip pat suteikia mums tam tikrų scenarijų stabilumo garantiją.
Patikimas versija kodą
galite išjungti arba dirbti direktyvas, arba nustatyti labiau sudėtingą kodą, kad pasiektų šį tikslą. Pavyzdžiui, kaip šis:
jei (isset ($ _ SESSION [ 'vardas'])) {
Echo "Labas {$ _SESSION [ 'username']} b>";
} {Kita
echo "Sveiki Svečių b>
";
echo "Sveiki atvykę vartotoją!";
}
Padaryti rungtynių šiuo atveju, bus sunku. Bet vis tiek - įmanoma. Norėdami tai padaryti, jūs turite rūpintis, kad greitojo reagavimo įrankiai teikė. Jei norite įtraukti globalių kintamųjų PHP, galite naudoti šiuos įrankius: jei mes žinome, ką diapazonas yra gauta vertė, tai yra įmanoma užregistruoti scenarijų patikrinti tai su rungtynių. Žinoma, ji taip pat negarantuoja visiškos apsaugos nuo pakaitines vertes. Bet tai per daug variantų gerokai komplikuoti.
Randa bando apsimesti
Pažiūrėkime, kaip Jūs suprantate parašyta anksčiau. PHP globalių kintamųjų į funkciją, kuri bus pateiktas žemiau, jums reikės deklaruoti save. Galime sakyti, kad tai yra namų darbų rūšies remiantis pamokos temą asimiliacijos. Čia yra kodas:
Php
jei (isset ($ _ COOKIE [ 'C_COOKIE'])) {
} Elseif (isset ($ _ GET [ 'C_COOKIE']) || isset ($ _POST [ 'C_COOKIE'])) {
paštas (administrarot@example.com "," Dėmesio, scenarijus buvo užfiksuotas bandymas vagysčių ir klastojimo duomenis ", $ _SERVER [ 'REMOTE_ADDR']);
echo "Čia buvo sudužusi saugos arba bandyti tai padaryti pranešė administratoriui.";
išeiti;
} {Kita
}
?>
Dabar paaiškinimas juo. Dalinai C_COOKIE ateina pas mus iš patikimų šaltinių. Visiškai patenkintas atsižvelgiant į numatomą to, mes tikriname savo vertę ir pranešti administratoriui kilus problemoms. Jei jis nėra ateis, tada jokių veiksmų ir nereikėjo daryti. Jūs turite suprasti, kad tiesiog išjungti register_globals direktyva nedaro jūsų kodas yra saugus. Todėl bet koks kintamasis, kuris gauna scenarijų iš vartotojo, turi būti patikrinta, ar numatomą vertę.
išvada
Čia, apskritai, ir viskas, ką jums reikia žinoti apie globalių kintamųjų sėkmingai ir saugiai juos naudoti savo darbe. Žinoma, pasakyti, kad yra visiška garantija, kad niekas naudosime jų negali - užpuolikai yra nuolat tobulina savo metodus ir įgūdžius. Todėl pageidautina, kad būtų apriboti maksimaliai išnaudoti globalių kintamųjų į kodą. Laimei, struktūra ir dizaino bruožai šios programavimo kalbos gali pasiekti šį tikslą. Sėkmės!
Similar articles
Trending Now