KompjutersSoftwer

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

Hekk jitolbu l-kuntest li fih il-varjabbli u determinati. F'ħafna każijiet, dawn għandhom biss ambitu waħda. Meta l-varjabbli globali PHP mgħobbija minn fajls oħra, allura jista 'jkun inklussivi (jinkludu) u meħtieġ (jeħtieġu).

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"

U hawn huwa kif tiddikjara varjabbli globali għall PHP? Biex jintlaħaq dan l-għan se tgħinna il-kelma "globali". Huwa meħtieġ li post fuq quddiem tal-varjabbli li inti tixtieq li tagħmel globali (narimer, globali «Il Varjabbli").

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

Huwa possibbli fil-PHP li joħolqu varjabbli globali b'mod ieħor? Iva, lanqas wieħed. L-ewwel, ejja jikkunsidraw il-$ globals. Dan huwa firxa assoċjattiva. Iċ-ċavetta għal dan - huwa l-isem. Bħala l-valur tal-kontenut taġixxi bħala varjabbli globali. Għandu jiġi nnutat li l-firxa wara t-tħabbir teżisti fi kwalunkwe ambitu. Dan jagħti raġuni biex jemmnu fiha superglobal. Huwa jistenna hekk: $ globals [ "varjabbli"].

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 "]} ";

} Else {

eku "Hello Guest /> 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:

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

 

 

 

 

Newest

Copyright © 2018 mt.delachieve.com. Theme powered by WordPress.