KompyutaProgramu

PHP kimataifa variable katika kazi. Kufanya variable kimataifa katika PHP

Kujenga tovuti kamili, ambayo ina utendaji mpana unahitaji kujua mengi. Lakini nini unaweza kufanya naye kweli kipekee - ni PHP. variable kimataifa katika lugha ya programu si kutumika mara nyingi sana, lakini wakati mwingine kujua jinsi inavyofanya kazi, wakati mwingine ni muhimu. Hiyo ni utafiti wa ni nini na jinsi inavyofanya kazi, sisi ni kwenda kufanya katika makala hii.

wigo

Hivyo wito mazingira ambayo variable na kuamua. Katika hali nyingi, wana upeo moja tu. Wakati PHP vigezo kimataifa kubeba kutoka faili nyingine, basi inaweza kuwa ni umoja (pamoja) na anahitajika (unahitaji).

Kwa chaguo-msingi, wao ni mdogo kwa ndani kazi upeo. Na jinsi ya kufanya kutofautiana kuonekana faili katika mipaka yake, ambayo inaweza zaidi na kutumia? Hadi mwisho huu, na hutolewa katika PHP vigezo kimataifa.

neno muhimu "kimataifa"

Na hapa ni jinsi ya kutangaza variable kimataifa kwa PHP? Katika kufikia lengo hili litatusaidia neno "dunia". Ni muhimu kuweka mbele variable kwamba unataka kufanya kimataifa (narimer, kimataifa «Variable").

Baada ya utekelezaji wa hayo dalili, data itakuwa na uwezo wa kufanya kazi na faili yoyote. Kama mahali fulani kuna ushahidi wa kutofautiana hii, mpango daima makini juu ya toleo ya kimataifa.

Kwa lugha ya ajabu kama hiyo? ukweli kwamba wakati huo huo kunaweza kuwa matoleo ya ndani. Lakini itakuwa inapatikana kwa ajili tu ya files ambazo alitangaza. Na kwa wengine wote kutenda vigezo kimataifa PHP darasa. Kwa hiyo ni lazima kuwa makini. Na kwamba hakukuwa na shaka, hapa ni mfano wa jinsi yanavyoonekana: a dunia.

Kwa sababu kama faili moja ataweza kufikia idadi ya vigezo, itakuwa kuwafanya kugongana. Lakini hatuwezi kusema kwa uhakika - ndani au wa kimataifa variable ni kusoma au kabisa itashindwa. Kwa hiyo, ikiwa ni kujiandikisha katika kazi, ni lazima kuwa na tatizo. Lakini matumizi ya kutofautiana kwa mipaka yake kwa kuwa tatizo. Kwa hiyo, muundo wa uandishi wa kanuni muhimu kufuatilia kwa karibu na kuhakikisha kuwa mahali pa kuna hata sharti la mgogoro alisema akaondoka.

Mwingine mfano halisi wa kurekodi

Je, inawezekana katika PHP kujenga variable kimataifa katika njia nyingine? Ndiyo, hakuna hata mmoja. Kwanza, hebu fikiria $ Globals. Hii ni safu associative. ufunguo wa hiyo - ni jina. Kama thamani ya yaliyomo kazi kama variable kimataifa. Ikumbukwe kwamba safu baada ya kutangazwa yupo katika upeo wowote. Hii inakupa sababu ya kuamini kuwa superglobal. Inaonekana hivyo: $ Globals [ 'variable'].

Predefined / superglobals

Katika kila lugha ya programu kuna baadhi majina ambayo katiba kwa baadhi ya kazi zake. Kwa hiyo, ili kujenga katika PHP vigezo kimataifa ya jina moja haiwezi kufanya kazi.

Lugha hii ya programu ina sifa yake mwenyewe. Hivyo, ni muhimu kwamba vigezo predefined hapa si kufunga "super", kwamba ni, wao si inapatikana katika maeneo yote. Jinsi gani naweza kurekebisha? Kwa vigezo predefined ilikuwa inapatikana katika baadhi ya eneo la karibu, ni lazima alisema kama ifuatavyo :. Global «Variable" Inaonekana kuwa sawa kabla aliiambia, sawa? Ni kweli, lakini si kabisa. Hebu angalia tayari "mapigano" mfano:

  • $ Kimataifa HTTP_POST_VARS;
  • echo $ HTTP_POST_VARS [ 'jina'].

Unahisi tofauti kati yao? Kumbuka kwamba katika PHP vigezo kimataifa si lazima kuwa na kutumika ndani ya kazi. Inaweza hata kuwekwa katika faili ambayo ni pamoja na katika hilo.

Viungo na usalama

Kama unavyoona, katika PHP kujenga variable kimataifa si tatizo. Lakini kuna yoyote viungo jamaa? Ndiyo, kunaweza kuwa na mabadiliko yasiyotarajiwa wakati wa kutumia kimataifa. Lakini kabla ya hapo, backstory kidogo.

Katika toleo 4.2.0 agizo kwa chaguo-msingi register_globals kubadilishwa kutoka kwenye hali ya mbali. Kwa watumiaji wengi, hii si muhimu sana, lakini bila mafanikio. Baada ya yote, moja kwa moja huathiri usalama wa bidhaa zilizoendelea. Kama unahitaji kufanya kutofautiana kimataifa, PHP-agizo juu ya parameter hii si moja kwa moja walioathirika. Hata hivyo, matumizi sahihi anaweza tayari kujenga matukio ya usalama.

Hivyo kama register_globals kimewashwa, kabla ya utekelezaji wa sheria iliyoandikwa haijaanzishwa mabadiliko tofautitofauti ambayo inahitajika, kwa mfano kutuma-aina HTML. Kwa hiyo, iliamuliwa ili kuizima.

Kwa nini hali ya agizo hili katika php kutofautiana kimataifa imepata mengi? Ukweli ni kwamba wakati hali ya watengenezaji wala daima kwa uhakika anaweza wenyewe kujibu swali la ilikotoka. Kwa upande mmoja, ni rahisi kuandika code. Lakini kwa upande mwingine - ni hatari kwa usalama. Kwa hiyo, ili kuepuka makosa, pamoja na data kuchanganya na agizo imefungwa.

Sasa hebu angalia si / salama code, pamoja na jinsi ya kuchunguza matukio ambapo kutangazwa kimataifa PHP variable huambatana na majaribio katika kuchezea na data. Hii ni muhimu ili kujenga nzuri tu, lakini pia kasi maeneo ambayo si ufa kwanza inapatikana mtu kufanya kazi.

hasidi

Tupange kwamba variable ni kweli kwa wale ambao wamekuwa na mamlaka:

ikiwa (authenticate_user ()) {
$ Idhinisha = kweli;
}

kama ($ kuidhinisha) {
ni pamoja na "/highly/sensitive/data.php";
}

Katika hali hii, variable inaweza kuweka moja kwa moja. Kuzingatia kwamba data unaweza tu kuwa na nafasi, na chanzo cha asili yao haujawekwa, basi mtu yeyote anaweza kupita mtihani hiyo na kujifanya kuwa mtu mwingine. Kama taka, mshambulizi (au tu curious lakini wasio na uzoefu mtu) inaweza kuwa na utendaji, mantiki yetu.

Kama sisi mabadiliko ya thamani ya agizo, kanuni hii kazi kwa usahihi, kama sisi required. Lakini initialization ya vigezo si tu tone nzuri katika programu, lakini pia inatupa dhamana fulani ya utulivu wa hati.

Kuaminika toleo la kanuni

unaweza kuzima au kufanya kazi maelekezo, au kuagiza code ngumu zaidi ili kufikia lengo hili. Kwa mfano, kama hivi:

ikiwa (isset ($ _ MKUTANO [ 'jina la mtumiaji'])) {

echo "Hujambo {$ _ MKUTANO [ 'jina la mtumiaji']} ";

} Else {

echo "Hujambo Guest
";
echo "Karibu user!";

}

Kufanya badala katika kesi hii, kutakuwa na ngumu. Lakini bado - iwezekanavyo. Ili kufanya hivyo, lazima kuchukua tahadhari ya kwamba haraka zana majibu walikuwa zinazotolewa. Kama unataka ni pamoja na vigezo kimataifa katika PHP, unaweza kutumia zana zifuatazo: kama sisi kujua nini mbalimbali ni thamani kupatikana, inawezekana kujiandikisha script kuangalia hii na mechi. Bila shaka, ni pia haina dhamana ya ulinzi kamili dhidi ya maadili badala. Lakini hiyo ni njia sana kwa kiasi kikubwa magumu.

Hupata majaribio ya kinyago

Hebu tuone jinsi kuelewa yaliyoandikwa mapema. Katika PHP vigezo kimataifa katika kazi hiyo atapewa chini, unahitaji kutangaza mwenyewe. Tunaweza kusema kwamba hii ni aina ya kazi ya nyumbani juu ya assimilation ya somo mada. Hapa ni code:

ikiwa (isset ($ _ kuki [ 'C_COOKIE'])) {
} Elseif (isset ($ _ KUPATA [ 'C_COOKIE']) || isset ($ _ POST [ 'C_COOKIE'])) {

mail ( "administrarot@example.com", "Makini, hati hiyo iliyoandikwa jaribio la uvunjaji na anacheza na data", $ _SERVER [ 'REMOTE_ADDR']);
echo "Kulikuwa na usalama kuvunjwa au kujaribu kufanya hivyo taarifa Msimamizi.";
exit;

} Else {
}
?>

Sasa maelezo dharura. Sehemu C_COOKIE anakuja kwetu kutoka chanzo cha kuaminika. Kwa kuridhika kikamilifu kwa mujibu wa matokeo yanayotarajiwa, tunapoingia thamani yake na kukujulisha msimamizi katika kesi ya matatizo. Kama haina kuja, basi hakuna hatua na hakuwa na haja ya kufanya. Una kuelewa kuwa tu mlemavu agizo register_globals haina kanuni yako ni salama. Kwa hiyo, variable yoyote ambayo anapata hati kutoka kwa mtumiaji, lazima kuchunguzwa kwa thamani ilivyotarajiwa.

hitimisho

Hapa, kwa ujumla, na kila kitu unahitaji kujua kuhusu vigezo kimataifa mafanikio na usalama kuzitumia katika kazi zao. Bila shaka, kusema kwamba kuna dhamana ya kwamba hakuna mtu kuzitumia hauwezi - washambuliaji ni daima kuboresha mbinu na ujuzi wao. Kwa hiyo ni bora kupunguza matumizi ya kiwango cha juu ya vigezo kimataifa katika code. Kwa bahati nzuri, muundo na kubuni sifa za lugha hii ya programu wanaweza kufikia lengo hili. bahati njema!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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