Kompjuters, Softwer
PHP varjabbli globali fil-funzjoni. Agħmel varjabbli globali fil-PHP
Biex jinħoloq sit sħiħa, li għandha funzjonalità wiesgħa għandek bżonn tkun taf ħafna. Imma dak li jista 'jagħmel lilu tassew unika - huwa PHP. Il-varjabbli globali fil-lingwa ta 'programmar ma tintużax ħafna drabi, imma xi kultant tkun taf kif taħdem, xi kultant huwa neċessarju. Li hija l-istudju ta 'dak li hu u kif taħdem, aħna se jagħmlu f'dan l-artikolu.
ambitu
Konvenzjonalment, huma limitati għall-ambitu funzjoni lokali. U kif jagħmlu varjabbli fajls dehru konfini tagħha, li jistgħu aktar u jużaw? Għal dan il-għan, u hija pprovduta fil-varjabbli globali PHP.
Il-keyword "globali"
Wara l-implimentazzjoni ta 'indikazzjoni bħal din, id-data ser ikunu jistgħu jaħdmu ma' kwalunkwe fajl. Jekk x'imkien hemm referenzi għal dan il-varjabbli, il-programm dejjem se tagħti attenzjoni fuq il-verżjoni globali.
Għaliex tali lingwa stramba? Il-fatt li fl-istess ħin jista 'jkun hemm verżjonijiet lokali. Imma dawn se tkun disponibbli esklussivament għal dawk il-fajls fejn mħabbra. Għal dejjem l-bqija se taġixxi varjabbli globali klassi PHP. Għalhekk trid tkun attenta. U li ma kien hemm ebda dubju, hawnhekk eżempju ta 'dak li look like: globali.
Għaliex jekk fajl wieħed se jkollhom aċċess għal numru ta 'varjabbli, dan ser jikkawża lill kunflitt. Iżda aħna ma nistgħux ngħidu għall żgur - lokali jew globali varjabbli tinqara jew għal kollox jonqos. Għalhekk, jekk huwa li jirreġistraw funzjoni, għandu jkun hemm ebda problema. Iżda l-użu ta 'varjabbli għal fruntieri tagħha li tkun problematika. Għalhekk, l-istruttura tal-abbozzar tal-kodiċi meħtieġa biex tissorvelja mill-qrib u kun żgur li mkien hemm anke prerekwiżit għall-imsemmi kunflitt ikun beda.
ieħor inkarnazzjoni tar-reġistrazzjoni
Predefiniti / superglobals
F'kull lingwa ta 'programmar hemm xi ismijiet li huma mikrija għal xi wħud mill-funzjonijiet tiegħu. Għalhekk, biex jinħolqu fl PHP varjabbli globali tal-istess isem mhux se taħdem.
Din il-lingwa ta 'programmar għandu l-karatteristiċi tiegħu stess. Għalhekk, huwa importanti li l-varjabbli definiti minn qabel hawn mhumiex installazzjoni "super", jiġifieri, dawn ma jkunux disponibbli fil-postijiet kollha. Kif nista jiffissaw dan? Biex varjabbli definiti minn qabel kienet disponibbli f'xi żona lokali, għandu jiġi ddikjarat kif ġej :. Globali «varjabbli" Jidher li jkun l-istess bħal qabel jafu, id-dritt? Huwa veru, iżda pjuttost mhux. Ejja nħarsu lejn diġà "ġlieda" eżempju:
- $ Globali HTTP_POST_VARS;
- eku $ HTTP_POST_VARS [ "isem"].
Inti tħoss id-differenza bejniethom? Innota li varjabbli globali PHP mhux bilfors għandhom jintużaw fil-funzjoni. Dan jista 'saħansitra jitqiegħdu fil-fajl li huwa inkluż fih.
Links u s-sigurtà
Kif tistgħu taraw, fil-PHP toħloq varjabbli globali mhix problema. Iżda hemm xi rabtiet relattivi partikolari? Iva, jista 'jkun hemm aġir mhux mistenni meta jużaw globali. Iżda qabel dan, backstory ftit.
Fil-verżjoni 4.2.0-direttiva mill register_globals kontumaċja mibdul minn 'fuq l-istat għal off. Għal ħafna utenti, dan mhux importanti ħafna, iżda fil vain. Wara kollox, din taffettwa direttament is-sigurtà tal-prodott żviluppati. Jekk inti għandek bżonn tagħmel l-varjabbli globali, PHP direttiva dwar dan il-parametru ma jkunx affettwat direttament. Madankollu, l-użu mhux korrett tista 'diġà toħloq preċedent sigurtà.
Mela jekk register_globals hija mixgħula, qabel l-eżekuzzjoni tal-kodiċi miktub initialized-varjabbli differenti li huma meħtieġa, per eżempju li tibgħat HTML-formoli. Għalhekk, ġie deċiż li dan off.
Għaliex huwa l-istat ta 'din id-direttiva fil-varjabbli globali PHP jaf ħafna? Il-fatt hu li meta l-istat tal-iżviluppaturi mhux dejjem b'ċertezza jistgħu huma stess titwieġeb il-mistoqsija fejn ġew minn. Min-naħa waħda, huwa aktar faċli li jikteb il-kodiċi. Imma fuq l-oħra - huwa riskju ta 'sigurtà. Għalhekk, sabiex jiġu evitati żbalji, kif ukoll data taħlit u Direttiva ġiet b'diżabilità.
Issa ejja nħarsu mhux / kodiċi siguri, kif ukoll kif jiġu individwati każijiet fejn l-aħbar tal-varjabbli globali PHP akkumpanjata minn tentattivi ta 'tbagħbis ma' data. Dan huwa meħtieġ sabiex jinħoloq mhux biss sbieħ, iżda wkoll is-siti li ma xquq l-ewwel persuna disponibbli b'mod stabbli taħdem.
kodiċi malizzjużi
Ejja sett li varjabbli huwa veru għal dawk li ġew awtorizzati:
jekk (authenticate_user ()) {
$ Tawtorizza = vera;
}
jekk ($ jawtorizzaw) {
jinkludu "/highly/sensitive/data.php";
}
F'dan l-istat, il-varjabbli jista 'jiġi stabbilit awtomatikament. Meta wieħed iqis li d-data jistgħux sempliċiment jiġu sostitwiti, u s-sors tal-oriġini tagħhom ma jkunx stabbilit, allura kulħadd jista 'jgħaddi tali test u jippretendux li huma xi ħadd ieħor. Jekk mixtieq, l-attakkant (jew il-persuna sempliċiment kurjuż iżda mingħajr esperjenza) jistax jitħassar, loġika tagħna.
Jekk aħna jibdlu l-valur tad-direttiva, dan il-kodiċi se taħdem b'mod korrett, kif aħna meħtieġ. Iżda inizjalizzazzjoni ta 'varjabbli mhux biss tone tajba fl-ipprogrammar, iżda wkoll tagħtina ċertu garanzija ta' l-istabbilta` tas-iskrittura.
Verżjoni affidabbli tal-kodiċi
inti tista 'itfi jew ix-xogħol direttivi, jew jippreskrivu kodiċi aktar kumplessi biex jintlaħaq dan lgħan. Per eżempju, bħal din:
jekk (isset ($ _ SESSJONI [ "username"])) {
eku "Hello {$ _ SESSJONI [" username "]} b>";
} Else {
eku "Hello Guest b> />
eku "Merħba utent!";
}
Jagħmlu sostituzzjoni f'dan il-każ, se jkun hemm diffiċli. Iżda xorta - possibbli. Biex tagħmel dan, inti trid tieħu ħsieb li ma ġew provduti l-għodod ta 'rispons rapidu. Jekk inti tixtieq li jinkludu varjabbli globali fl-PHP, tista 'tuża l-għodod li ġejjin: jekk nafu x'inhi l-firxa hija l-valur miksub, huwa possibbli li tirreġistra b'kitba li tivverifika dan ma' logħba. Naturalment, huwa wkoll ma tiggarantix protezzjoni sħiħa kontra l-valuri ta 'sostituzzjoni. Imma dak li l-għażliet wisq jikkomplika b'mod sinifikanti.
Isib tentattivi biex masquerade
Ejja naraw kif inti tifhem miktub qabel. Fil-PHP varjabbli globali fil-funzjoni li se jingħataw hawn taħt, ser ikollok bżonn li tiddikjara lilek innifsek. Nistgħu ngħidu li dan huwa tip ta 'dar fuq l-assimilazzjoni tas-suġġett lezzjoni. Hawnhekk huwa l-kodiċi:
PHP
jekk (isset ($ _ [ "C_COOKIE"]) cookie) {
} Elseif (isset ($ _ IKOLLOK [ "C_COOKIE"]) || isset ($ _ POST [ "C_COOKIE"])) {
posta ( "administrarot@example.com", "Attenzjoni, l-iskrittura kien irreġistrat attentat serq u t-tbagħbis ma 'data", $ _SERVER [ "REMOTE_ADDR"]);
eku "Kien hemm sigurtà imkisser jew tipprova tagħmel dan innotifikat lill-Amministratur.";
ħruġ;
} Else {
}
?>
Issa spjegazzjoni miegħu. Parzjalment C_COOKIE jidħol għalina minn sors affidabbli. Biex sodisfatti għal kollox skond ir-riżultat mistenni, aħna jiċċekkjaw valur tagħha u tinnotifika lill-amministratur f'każ ta 'problemi. Jekk dan ma jaqax, allura l-ebda azzjoni u ma kellhiex għalfejn tagħmel. Int għandek tifhem li sempliċiment inkapaċitazzjoni direttiva register_globals ma jagħmilx kodiċi tiegħek hija sigura. Għalhekk, kwalunkwe varjabbli li jirċievi b'kitba mill-utent, għandhom jiġu kkontrollati għall-valur mistenni.
konklużjoni
Hawnhekk, b'mod ġenerali, u dak kollu li għandek bżonn tkun taf dwar il-varjabbli globali għall-użu b'suċċess u b'mod sikur fil-ħidma tagħhom. Naturalment, li jgħidu li hemm garanzija sħiħa li l-ebda waħda se jużawhom ma tistax - attakkanti huma kontinwament titjib tal-metodi u l-ħiliet tagħhom. Huwa għalhekk mixtieq li jiġi limitat l-użu massimu ta 'varjabbli globali fil-kodiċi. Fortunatament, l-istruttura u d-disinn l-karatteristiċi ta 'din il-lingwa ta' programmar tista 'tikseb dan l-għan. Xorti tajba!
Similar articles
Trending Now