RačunalnikiProgramska oprema

PHP globalna spremenljivka v funkciji. Naredite globalne spremenljivke v PHP

Če želite ustvariti celotno spletno stran, ki ima veliko funkcionalnosti, ki jih morate vedeti veliko. Toda, kaj lahko bi ga resnično edinstven - je PHP. Globalna spremenljivka v programskem jeziku, se ne uporabljajo zelo pogosto, včasih pa tudi vedeti, kako deluje, včasih je potrebno. To je raziskava o tem, kaj je in kako deluje, bomo storili v tem članku.

obseg

Torej pokličite na kontekst, v katerem določena spremenljivka in. V večini primerov imajo samo eno področje. Ko PHP globalne spremenljivke naložen iz drugih datotek, potem je lahko vključujoča (vključuje) in potrebno (zahtevati).

Privzeto je, da so omejeni na lokalno področje delovanja. In kako narediti spremenljive videti datotek na svojih mejah, ki bi lahko bolj in uporabo? V ta namen je na voljo v globalnih spremenljivk PHP.

Ključna beseda "globalni"

In tukaj je, kako naj ugotovi globalna spremenljivka v PHP? Pri doseganju tega cilja nam bo pomagalo besedo "globalno". To je potrebno, da se pred spremenljivko, ki jo želite, da bi globalno (narimer, globalno «spremenljivka").

Po uveljavitvi tega podatka, bodo podatki lahko delo s katero koli datoteko. Če so nekje sklicevanja na te spremenljivke, bo program vedno pozoren na svetovnem različici.

Zakaj tak čuden jezik? Dejstvo, da ob istem času pa lahko lokalna verzija. Vendar bodo morali biti na voljo izključno za tiste datoteke, kjer napovedanih. In za vse ostalo bo deloval globalnih spremenljivk PHP razred. Zato morate biti previdni. In da ni bilo nobenega dvoma, tukaj je primer, kako so izgledali: globalni a.

Ker, če bo imela ena datoteka dostop do številnih spremenljivk, bo to povzročilo jim nasprotuje. Vendar ne moremo reči zagotovo - lokalna ali globalna spremenljivka bere ali sploh ne. Torej, če je za registracijo v funkciji, ne bi smelo biti problem. Toda uporaba spremenljivke za svoje meje, da je problematično. Zato je struktura pripravi kodeksa, ki je potreben, da pozorno spremlja in se prepričajte, da je nikjer ni niti pogoj za omenjeni konflikt nastal.

Druga izvedba snemanje

Ali je mogoče v PHP ustvariti globalno spremenljivko na drugačen način? Ja, ni niti enega. Najprej, kaj menijo o $ GLOBALS. To je asociativna polje. Ključ do nje - je ime. Ker je vrednost vsebine deluje kot globalne spremenljivke. Treba je opozoriti, da je v vsakem obsegu obstaja matrika po objavi. To daje razloga, da bi verjeli superglobal. To izgleda tako: $ GLOBALS [ 'spremenljivka'].

Vnaprej določeni / superglobals

V vsakem programskem jeziku obstaja nekaj imen, ki so najela za nekatere od svojih nalog. Zato, da ustvari v PHP globalne spremenljivke z istim imenom ne bo delovala.

Ta programski jezik ima svoje značilnosti. Zato je pomembno, da so vnaprej določene spremenljivke tu ne namestitvijo "super", kar pomeni, da niso na voljo na vseh lokacijah. Kako lahko to popravim? Da bi bil vnaprej določene spremenljivke v nekem lokalnem okolju na voljo, je treba navesti, kot sledi :. globalnega «spremenljivko" Zdi se, da je enako kot prej povedal, kajne? Res je, vendar ne povsem. Oglejmo si že "borijo" primer:

  • globalna $ HTTP_POST_VARS;
  • echo $ HTTP_POST_VARS [ "ime"].

Menite, da je razlika med njima? Upoštevajte, da v PHP globalnih spremenljivk ni nujno, da je treba uporabiti v funkciji. To lahko celo postavi v datoteko, ki je vključen v to.

Povezave in varnost

Kot lahko vidite, v PHP ustvariti globalno spremenljivko ni problem. Toda obstaja še kakšna relativne povezave? Ja, lahko pride do nepričakovanega vedenja pri uporabi globalno. Toda pred tem, malo backstory.

V različici 4.2.0 Direktiva privzeto register_globals spremenila iz na stanju na off. Za večino uporabnikov, to ni zelo pomembno, vendar zaman. Konec koncev, to neposredno vpliva na varnost razvitega izdelka. Če je potrebno, da je spremenljivka globalno, PHP-direktiva o tem parametru neposredno ne vpliva. Vendar pa lahko nepravilna uporaba že ustvarili varnost precedensi.

Torej, če je register_globals vklopljena, pred izvedbo pisno kodo inicializiran različne spremenljivke, ki so potrebne, na primer za pošiljanje HTML-oblike. Zato se je odločil, da jo izklopite.

Zakaj je stanje te direktive v php globalne spremenljivke dolguje veliko? Dejstvo je, da ko se je stanje razvijalci ne vedno z gotovostjo lahko sami odgovoriti na vprašanje, od kod je prišel. Po eni strani je lažje pisati kodo. Toda na drugi strani - to je varnostno tveganje. Zato, da bi se izognili napakam, kot tudi podatke za mešanje in direktiva je bila onemogočena.

Zdaj pa si poglejmo ne / varnostno kodo, kot tudi, kako odkriti primeri, ko je napoved svetovne PHP spremenljivke skupaj s poskusi s podatki. To je potrebno, da se ustvari, ne samo lepa, ampak tudi stalno delovno mesta, ki ne tresk prvo razpoložljivo osebo.

zlonamerno kodo

Naj določi, da spremenljivka velja za tiste, ki so bili pooblaščeni:

če (authenticate_user ()) {
$ Dovoli = true;
}

if ($ Dovoli) {
vključujejo "/highly/sensitive/data.php";
}

V tem stanju lahko spremenljivka se samodejno nastavi. Glede na to, da lahko podatke preprosto zamenjati, in ki je vir njihovega izvora ni nastavljen, potem lahko vsakdo prenese tak preizkus in se pretvarjati, da je nekdo drug. Če želite, lahko napadalec (ali pa samo radovedni, a neizkušen oseba) je oslabljeno, našo logiko.

Če spremenimo vrednost direktive, bo ta koda delovala pravilno, kot smo to potrebno. Toda inicializacija spremenljivk ni le dober signal pri načrtovanju, ampak tudi nam daje določeno jamstvo za stabilnost scenarij.

Zanesljivo različico kode

lahko izklopite ali delo direktive, ali predpiše bolj zapleteno kodo za dosego tega cilja. Na primer, kot je ta:

če (Isset ($ _ SEKCIJA [ 'username'])) {

odmeva "Halo {$ _ SEKCIJA [ 'username']} ";

} Else {

odmeva "Halo Gost
";
echo "Welcome uporabnika!";

}

Opravilo menjavo v tem primeru, ne bo težko. Ampak še vedno - je to mogoče. Če želite to narediti, morate poskrbeti, da so bili iz orodja za hiter odziv. Če želite vključiti globalne spremenljivke v PHP, lahko uporabite naslednja orodja: če vemo, kakšen obseg je pridobljena vrednost, je mogoče, da se registrirajo na scenarij, da preveri to s tekmo. Seveda pa tudi ne zagotavlja popolne zaščite pred vrednot zamenjave. Ampak to je tudi veliko možnosti precej zapletejo.

Najde poskuse Maškarada

Poglejmo, kako razumeti napisal prej. V PHP globalne spremenljivke v funkciji, da bodo navedeni v nadaljevanju, boste morali sami razglasi. Lahko rečemo, da je to neke vrste domače naloge na asimilacijo temo učne ure. Tukaj je koda:

če (Isset ($ _ COOKIE [ 'C_COOKIE'])) {
} Elseif (Isset ($ _ GET [ 'C_COOKIE']) || Isset ($ _ POST [ 'C_COOKIE'])) {

mail ( "administrarot@example.com", "Pozor, se je scenarij zabeležili poskus vloma in prirejanjem podatkov", $ _SERVER [ 'REMOTE_ADDR']);
echo "Prišlo je prelomljen varnostni ali poskus, da to storijo obvestili administratorja.";
izhod;

} Else {
}
?>

Zdaj razlaga s tem. Delno C_COOKIE prihaja k nam iz zanesljivega vira. Da bi v celoti izpolnjena v skladu s pričakovanim rezultatom, preverimo njegovo vrednost in obvesti skrbnika v primeru težav. Če ne pride, potem ne ukrepa in ne bi bilo treba narediti. Moraš razumeti, da preprosto onemogočite register_globals direktiva ne pomeni, da vaša koda je varen. Zato je vsaka spremenljivka, ki prejme scenarij od uporabnika, je treba preveriti za pričakovane vrednosti.

zaključek

Tukaj, na splošno, in vse, kar morate vedeti o globalnih spremenljivk, ki jih uspešno in varno uporabljajo pri svojem delu. Seveda, da pravijo, da je v celoti zagotovilo, da nihče ne bo njihovo uporabo, ne more - napadalci nenehno izboljšuje svoje metode in spretnosti. Zato je zaželeno, da omejite uporabo globalnih spremenljivk v kodi. Na srečo, lahko funkcije, struktura in oblika tega programskega jezika dosego tega cilja. Srečno!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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