Mga computerSoftware

PHP global variable sa function. Gumawa ng isang global variable sa PHP

Upang lumikha ng isang buong site, na may malawak na pag-andar na kailangan mong malaman ng isang pulutong. Ngunit ano ang makapagpapabatid sa kaniya ng tunay na natatanging - ito ay PHP. Ang global variable sa programming wika ay hindi ginagamit napakadalas, ngunit kung minsan upang malaman kung paano ito gumagana, kung minsan ito ay kinakailangan. Iyon ay ang pag-aaral ng kung ano ito at kung paano ito gumagana, kami ay pagpunta sa gawin sa artikulong ito.

saklaw

Kaya tumawag sa konteksto kung saan ang mga variable at natukoy. Sa karamihan ng mga kaso, mayroon silang lamang ng isang saklaw. Kapag PHP pangkalahatang variable load mula sa iba pang mga file, at pagkatapos ay maaaring ito ay inclusive (kasama) at kinakailangan (nangangailangan).

Sa pamamagitan ng default, ang mga ito ay limitado sa mga lokal na pag-andar saklaw. At kung paano gumawa ng variable nakita ng mga file sa mga hangganan nito, na maaaring higit pa at gamitin? Sa pagtatapos na ito, at ibinigay sa PHP global variable.

Ang keyword na "global"

At dito ay kung paano ipahayag ang isang global variable sa PHP? Sa pagkamit ng layuning ito ay makakatulong sa amin ang salitang "global". Ito ay kinakailangan upang ilagay sa harap ng variable na nais mong gumawa ng isang global (narimer, global «Variable Ang").

Matapos ang pagpapatupad ng mga naturang isang pahiwatig, ang data ay maaaring gumana sa anumang file. Kung sa isang lugar may mga sanggunian sa ang variable na ito, ang programa ay palaging bigyang-pansin sa pandaigdigang bersyon.

Bakit tulad ng isang kakaibang wika? Ang katotohanan na sa parehong oras na maaaring may mga lokal na mga bersyon. Ngunit sila ay magiging available eksklusibo para sa mga file na kung saan inihayag. At para sa lahat ang natitira ay kumilos pangkalahatang variable PHP klase. Samakatuwid dapat kang maging maingat. At na walang pag-aalinlangan, narito ang isang halimbawa ng kung ano ang hitsura nila tulad ng: global a.

Dahil kung ang isang file ay magkakaroon ng access sa isang bilang ng mga variable, ito ay maging sanhi ang mga ito upang salungat. Ngunit hindi namin maaaring sabihin para sigurado - lokal o global variable ay basahin o sama-sama nabigo. Kaya, kung ito ay upang magrehistro sa isang function, ito ay dapat na walang problema. Ngunit ang paggamit ng isang variable para sa kanyang mga hangganan upang maging may problemang. Samakatuwid, ang istraktura ng ang pagbalangkas ng code na kailangan sa malapit na subaybayan at tiyakin na wala kahit saan ay may kahit na isang paunang kinakailangan sa sinabi pagsalungat ay naganap.

Ang isa pang sagisag ng pag-record

Posible ba sa PHP upang lumikha ng isang global variable sa ibang paraan? Oo, wala kahit isa. Una, sabihin isaalang-alang ang $ GLOBALS. Ito ay isang nag-uugnay array. Ang susi sa ito - ay ang pangalan. Bilang ang halaga ng mga nilalaman ay gumaganap bilang isang global variable. Dapat ito ay nabanggit na ang array matapos ang anunsyo ay umiiral sa anumang saklaw. Ito ay magbibigay sa dahilan upang maniwala ito superglobal. Mukhang kaya: $ GLOBALS [ 'variable'].

Paunang-natukoy na / superglobals

Sa bawat programming language mayroong ilang mga pangalan na chartered para sa ilan sa kanyang function. Samakatuwid, upang lumikha ng sa PHP pangkalahatang variable ng parehong pangalan ay hindi gagana.

Ito programming language ay may sariling mga katangian. Kaya, ito ay mahalaga na ang mga paunang-natukoy na mga variable dito ay hindi na-install ng "sobrang", iyon ay, ang mga ito ay hindi magagamit sa lahat ng mga lokasyon. Paano ko aayusin ito? Upang paunang-natukoy na mga variable ay magagamit sa ilang mga lokal na lugar, dapat itong ipinahayag bilang mga sumusunod :. Global «Variable" Ito ay anyong ang parehong tulad ng dati sinabi, tama? Ito ay totoo, ngunit hindi lubos. Ipaalam sa amin tumingin sa na "aaway" isang halimbawa:

  • global $ HTTP_POST_VARS;
  • echo $ HTTP_POST_VARS [ 'name'].

sa palagay mo ang pagkakaiba sa pagitan ng mga ito? Tandaan na sa PHP pangkalahatang variable ay hindi kinakailangang may sa gamitin sa loob ng function. Maaari itong kahit na ilagay sa isang file na kasama sa ito.

Links at kaligtasan

Tulad ng iyong nakikita, sa PHP lumikha ng isang global variable ay hindi isang problema. Subalit ay may anumang partikular na kamag-anak na mga link? Oo, maaaring may mga hindi inaasahang pag-uugali kapag gumagamit ng global. Ngunit bago iyon, isang maliit na backstory.

Sa bersyong 4.2.0 ang direktiba sa pamamagitan ng default register_globals ay nagbago mula sa on-estado sa off. Para sa karamihan sa mga gumagamit, ito ay hindi masyadong mahalaga, ngunit walang kabuluhan. Pagkatapos ng lahat, ito ay direktang nakakaapekto ang seguridad ng binuo produkto. Kung kailangan mong gawin ang mga variable global, PHP-direktiba sa parameter na ito ay hindi direktang apektado. Gayunman, hindi tamang paggamit ay maaaring nai lumikha ng precedents seguridad.

Kaya kung register_globals ay naka-on, bago ang pagpapatupad ng mga nakasulat na code initialize ang iba't ibang mga variable na ay kinakailangan, halimbawa, upang magpadala ng HTML-anyo. Samakatuwid, ito ay nagpasya upang i-off ito.

Bakit ang estado ng ang panuto na ito sa php global variable owes magkano? Ang katotohanan ay na kapag ang estado ng mga developer ay hindi laging may katiyakan ay maaaring ang kanilang mga sarili sagutin ang tanong ng kung saan ito nanggaling. Sa isang banda, ito ay mas madali na magsulat ng code. Ngunit sa kabilang - ito ay isang panganib sa seguridad. Samakatuwid, upang maiwasan ang mga error, pati na rin ang data paghahalo at directive ay hindi pinagana.

Ngayon nga'y humanap ay hindi / secure na code, pati na rin ang kung paano sa tiktikan kaso kung saan ang anunsyo ng pandaigdigang PHP variable ay sinamahan ng mga pagtatangka sa pakikialam sa data. Ito ay kinakailangan upang lumikha ng hindi lamang maganda, ngunit din patuloy na nagtatrabaho mga site na hindi pumutok ang unang magagamit na tao.

malisyosong code

Sabihin set na variable ay totoo para sa mga taong na-awtorisadong:

kung (authenticate_user ()) {
$ Pahintulutan = true;
}

kung ($ pahintulutan) {
kasama ang "/highly/sensitive/data.php";
}

Sa ganitong estado, ang mga variable ay maaaring awtomatikong itakda. Isinasaalang-alang na ang data ay maaaring kailangan lang papalitan, at ang pinagmulan ng kanilang pinanggalingan ay hindi nakatakda, pagkatapos ay kahit sino ay maaaring dumaan sa pagsubok at magpanggap na ibang tao. Kung ninanais, ang magsasalakay (o lamang mausisa ngunit walang karanasan tao) ay maaaring may kapansanan sa, ang aming logic.

Kung babaguhin namin ang halaga ng direktiba, ang code na ito ay gagana ng wasto, bilang namin kailangan. Ngunit initialization ng mga variable ay hindi lamang isang mahusay na tono sa programming, ngunit din ay nagbibigay sa amin ng isang tiyak na garantiya ng katatagan ng script.

Maaasahang bersyon ng code

maaari mong i-off o magtrabaho direktiba, o magreseta ng isang mas kumplikadong code upang makamit ang layuning ito. Halimbawa, tulad nito:

if (isset ($ _ SESSION [ 'username'])) {

echo "Hello {$ _ SESSION [ 'username']} ";

} Iba Pa {

echo "Hello Bisita
";
echo "Welcome user!";

}

Gumawa ng isang paghahalili sa kasong ito, magkakaroon ng mahirap. Ngunit pa rin - maaari. Upang gawin ito, kailangan mong mag-ingat na ang mga mabilis na mga kasangkapan na tugon ay ibinigay. Kung nais mong isama ang mga pangkalahatang variable sa PHP, maaari mong gamitin ang mga sumusunod na mga kasangkapan: kung alam namin kung ano ang hanay ay ang halaga na nakuha, ito ay posible upang magrehistro ng isang script upang suriin sa isang match. Of course, ito rin ay hindi ginagarantiya ang ganap na proteksyon laban sa pagpapalit halaga. Ngunit iyon lamang ang masyadong maraming mga pagpipilian makabuluhang kumplikado.

Hinahanap ng mga pagtatangka upang magbalatkayo

Tingnan natin kung paano mo maintindihan nakasulat na mas maaga Hayaan. Sa PHP global variable sa function na ay ibinigay sa ibaba, kakailanganin mong ipahayag ang iyong sarili. Maaari naming sabihin na ito ay isang uri ng araling-bahay sa paglagom ng paksang aralin. Narito ang code:

if (isset ($ _ COOKIE [ 'C_COOKIE'])) {
} ELSEIF (isset ($ _ GET [ 'C_COOKIE']) || isset ($ _ POST [ 'C_COOKIE'])) {

mail ( "administrarot@example.com", "Pansin, ang script ay naitala pagtatangka sa pagnanakaw at pakikialam sa data", $ _SERVER [ 'REMOTE_ADDR']);
echo "Nagkaroon ng isang putol na kaligtasan o pagtatangka na gawin ito notify ang Administrator.";
exit;

} Iba Pa {
}
?>

Ngayon na paliwanag dito. Bahagyang C_COOKIE pagdating sa amin mula sa isang maaasahang pinagmulan. Upang ganap na nasiyahan ayon sa inaasahang resulta, suriin natin ang halaga nito at ipagbigay-alam ang administrator sa kaso ng mga problema. Kung ito ay hindi, pagkatapos ay walang pagkilos at hindi na kailangan na gawin. Ikaw ay may na maunawaan na ang kailangan lang i-disable ang register_globals direktiba ay hindi gawin ang iyong code ay ligtas. Samakatuwid, ang anumang mga variable na natatanggap ng isang script mula sa user, ay dapat na naka-check para sa mga inaasahang halaga.

konklusyon

Dito, sa pangkalahatan, at lahat ng bagay na kailangan mong malaman tungkol sa mga pangkalahatang variable upang matagumpay at ligtas na gamitin ang mga ito sa kanilang trabaho. Of course, sabihin na mayroong isang ganap na garantiya na walang sinuman ang gagamit hindi sila maaari - attackers ay patuloy na pagpapabuti ng kanilang mga pamamaraan at kasanayan. Ito ay samakatuwid ay kanais-nais upang limitahan ang maximum na paggamit ng mga global variable sa code. Sa kabutihang palad, ang istraktura at disenyo tampok ng programming wika ay maaaring makamit ang layuning ito. Good luck!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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