ArvutidTarkvara

PHP globaalse muutuja funktsiooni. Tee globaalse muutuja PHP

Et luua kogu sait, mis on lai funktsionaalsus, mida pead teadma palju. Aga mida teha teda tõeliselt unikaalne - see on PHP. Ülemaailmne muutuja programmeerimiskeelt ei kasutata väga sageli, kuid mõnikord teada, kuidas see toimib, mõnikord on vaja. See on uuring, mis see on ja kuidas see toimib, me teeme selles artiklis.

ulatus

Nii kõne kontekstist, milles muutuja ja kindlaks määrata. Enamasti on neil ainult üks ulatus. Kui PHP globaalsed muutujad laaditud muid faile, siis võib see olla kõikehõlmav (sisaldavad) ja vajalik (nõuavad).

Vaikimisi nad on piiratud kohaliku funktsiooni ulatust. Ja kuidas teha muutuva näinud failid oma piire, mis võiks rohkem ja kasutada? Selleks ja on esitatud PHP globaalseid muutujaid.

Märksõna "globaalne"

Ja siin on, kuidas kuulutada globaalne muutuja PHP? Selle eesmärgi saavutamisel aitab meil sõna "global". On vaja panna ees muutuja, mida soovite teha ülemaailmne (narimer, globaalse «muutuja").

Pärast rakendamise selline märge andmete suudab töötada mis tahes faili. Kui kuskil on viiteid selle muutuja, programmi alati pöörama tähelepanu globaalsele versiooni.

Miks selline imelik keel? Asjaolu, et samal ajal võib olla kohalike versioonid. Aga nad on saadaval ainult neid faile, kus teatas. Ja kõik ülejäänud toimivad globaalsed muutujad PHP klassi. Seega sa pead olema ettevaatlik. Ja see ei olnud mingit kahtlust, siin on näide sellest, mida nad näevad välja nagu: ülemaailmne a.

Sest kui üks fail on juurdepääs mitmeid muutujaid, tekitab see neil vastuolus. Aga me ei saa öelda kindlalt - kohaliku või globaalse muutuja on lugeda või üldse ei õnnestu. Niisiis, kui see on registreeritud, et saada funktsiooni, see ei tohiks olla probleem. Aga kasutada muutuja selle piirid olla problemaatiline. Seetõttu struktuuri koostamisel koodi vaja hoolikalt jälgida ja veenduda, et kusagil on olemas isegi eelduseks nimetatud tekkis konflikt.

Järgmises teostuses salvestuse

Kas on võimalik PHP luua globaalse muutuja muul viisil? Jah, isegi mitte üks. Esiteks Vaatleme $ GLOBALS. See on assotsiatiivne massiiv. Võti - on nimi. Kuna sisu väärtuse toimib globaalne muutuja. Tuleb märkida, et massiivi pärast väljakuulutamist olemas mingeid võimalusi. See annab alust arvata, et superglobal. Tundub nii: $ GLOBALS [ 'muutuja'].

Etteantud / superglobals

Igas programmeerimiskeelt on mõned nimed, mis on renditud osa oma ülesandeid. Seepärast, et luua PHP globaalsed muutujad sama nime ei tööta.

See programmeerimiskeelt on oma eripärad. Nii, see on oluline, et etteantud muutujate siin ei paigaldamist "super", see tähendab, nad ei ole saadaval kõikides piirkondades. Kuidas ma saan seda parandada? Eeldefineeritud muutujaid oli saadaval mõnel piirkonnas, tuleb see deklareerida järgmiselt :. Global «Muutuja" See tundub olevat sama nagu enne ütlesin, eks? See on tõsi, kuid mitte päris. Vaatame juba "võitlus" näide:

  • globaalse $ HTTP_POST_VARS;
  • kaja $ HTTP_POST_VARS [name].

Sa tunned erinevust? Pange tähele, et PHP globaalsed muutujad ei pea tingimata ära kasutada funktsiooni. See võib isegi panna faili, mis sisaldab seda.

Viited ja ohutuse

Nagu näete, PHP luua globaalse muutuja ei ole probleem. Aga on olemas eelkõige suhtelise linke? Jah, seal võib olla ootamatu käitumine kasutamisel ülemaailmne. Aga enne seda, natuke backstory.

Versioonis 4.2.0 Direktiivi vaikimisi register_globals muutunud aasta-riik välja. Enamiku kasutajate see ei ole väga oluline, kuid asjata. Lõppude lõpuks, see mõjutab otseselt turvalisuse arenenud toodet. Kui teil on vaja teha muutuja globaalne, PHP-direktiiv seda parameetrit ei ole otseselt mõjutatud. Kuid vale kasutamine võib juba luua pretsedente turvalisust.

Nii et kui register_globals on sisse lülitatud, enne täitmist kirjaliku kood lähtestatud erinevaid muutujaid, mida on vaja, näiteks saata HTML-vormid. Seetõttu otsustati see välja lülitada.

Miks on riigi käesoleva direktiivi php globaalse muutuja võlgneb palju? Fakt on, et kui riik arendajad ei ole alati kindlalt võiks ise vastata küsimusele, kust see tuli. Ühelt poolt, siis on lihtsam kirjutada koodi. Aga teisest küljest - see on turvarisk. Seepärast, et vältida vigu, samuti andmed segamise ja direktiiv on keelatud.

Nüüd vaatame ei / turvakoodi, samuti kuidas tuvastada juhtumeid, kus väljakuulutamist ülemaailmne PHP muutuja on lisatud muutmiskatsete andmetega. See on vajalik selleks, et luua mitte ainult ilus, vaid ka pidevalt töötavad saite, mis ei pragune esimene saadaval isik.

pahatahtliku koodi

Lepime, et muutuja on tõsi neile, kes on volitatud:

if (authenticate_user ()) {
$ Authorize = true;
}

if ($ volitama) {
ka "/highly/sensitive/data.php";
}

Selles olekus muutuja saab seadistada automaatselt. Arvestades, et andmed saab lihtsalt asendada, ja allikas nende päritolu ei ole määratud, siis igaüks saab läbida selline test ja teeselda, et olla keegi teine. Soovi korral ründaja (või lihtsalt uudishimulik, kuid kogenematu inimene) võib olla häiritud, meie loogika.

Kui me väärtuse muutmiseks direktiivi see kood töötab korralikult, kui me vaja. Aga initsialiseerimise muutujaid ei ole mitte ainult hea toon programmeerimine, vaid ka annab meile teatud stabiilsuse tagatis skripti.

Usaldusväärne versiooni koodi

saab välja lülitada või töötada direktiivid või kirjutada keerukama kood selle eesmärgi saavutamiseks. Näiteks nii:

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

echo "Tere {$ _ SESSION [ 'kasutajanimi']} ";

} Else {

echo "Tere Külaliste
";
echo "Tere kasutaja!";

}

Tegema vahetuse sel juhul tekib raske. Aga ikkagi - võimalik. Et seda teha, siis peab hoolitsema, et kiire reageerimise vahendid olid ette. Kui soovite lisada globaalsed muutujad PHP, saate kasutada järgmisi vahendeid: kui me teame, mida vahemik on väärtus, mis saadakse, on võimalik registreerida skripti kontrollida seda mängu. Muidugi, see ka ei garanteeri täielikku kaitset asendamise väärtusi. Aga see on liiga palju võimalusi oluliselt keerulisemaks.

Leiab katsed teesklema

Vaatame, kuidas saate aru kirjutanud varem. PHP globaalse muutuja funktsiooni, mis on toodud allpool, peate kuulutada ennast. Me ei saa öelda, et see on mingi kodutöö assimilatsiooni õppetund teema. Siin on kood:

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

mail ( "administrarot@example.com", "Tähelepanu, skript registreeriti katse murdvarguse ja omavoliline andmed", $ _SERVER [ 'REMOTE_ADDR']);
echo "Seal oli katki ohutuse või üritada teha teatavaks administraator.";
exit;

} Else {
}
?>

Nüüd selgitus sellele. Osaliselt C_COOKIE tuleb meile usaldusväärsest allikast. Et täielikult rahuldatakse vastavalt oodatava tulemuse me kontrollime oma väärtust ja teatama haldurile probleemide korral. Kui see ei tule, siis ei reageeri ja ei ole vaja teha. Sa pead aru saama, et lihtsalt ka register_globals ei tee direktiiv koodi on turvaline. Seetõttu peab iga muutuja, mis saab skripti alla, tuleb kontrollida eeldatav väärtus.

järeldus

Siin üldiselt ja kõike, mida vaja teada maailma muutujad edukalt ja ohutult kasutada neid oma töös. Muidugi, öelda, et seal on täielik garantii, et keegi ei kasuta neid ei saa - ründajad pidevalt parandada oma meetodeid ja oskusi. Seepärast on soovitav piirata maksimaalselt ära kasutada globaalsete muutujate koodi. Õnneks struktuuri ja disaini funktsioonid programmeerimiskeelt saab selle eesmärgi saavutamiseks. Õnn kaasa!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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