PHP je globalna spremenljivka v funkciji. V PHP spremenite globalno spremenljivko
Če želite ustvariti polnopravno spletno mesto, ki ima široko funkcionalnost, morate o tem veliko vedeti. Toda kaj lahko naredi resnično edinstvenost je PHP. Globalna spremenljivka v tem programskem jeziku se ne uporablja zelo pogosto, včasih pa je treba vedeti, kako deluje. S preučevanjem, kaj je in kako deluje, bomo preučili ta članek.
Vsebina
Področje uporabe
To je kontekst, v katerem je spremenljivka opredeljena. V večini primerov imajo le en obseg. Ko so v PHP globalne spremenljivke naložene iz drugih datotek, se lahko vanj vključijo (vključijo) in zahtevajo (zahtevajo).
Privzeto so omejeni z lokalnim obsegom funkcije. In kako želite, da spremenljivko vidijo datoteke zunaj svojih meja, in ali bi jih lahko uporabili tudi? PHP omogoča tudi globalno spremenljivko.
Ključna beseda "globalna"
Ampak kako deklariramo globalno spremenljivko PHP? Pri doseganju tega cilja nam bo pomagala beseda "globalna". Postaviti jo morate pred spremenljivko, ki jo želite spremeniti (na primer globalno »Spremenljivka«).
Po izvedbi takšnega navodila lahko katera koli datoteka dela s podatki. Če se nekje sklicuje na to spremenljivko, bo program vedno pozoren na globalno različico.
Zakaj takšna čudna formulacija? Dejstvo je, da lahko ob istem času pride do lokalnih različic. Vendar bodo na voljo le v tistih datotekah, kjer so prijavljene. In za vse ostale bodo globalne spremenljivke razreda PHP delovale. Zato morate biti previdni. In tako, da ni nobenega dvoma, tukaj je primer, kako izgledajo: globalno a.
Ker če ima ena datoteka dostop do več spremenljivk, bo to povzročilo konflikt. Ampak tukaj ne moremo natančno povedati - lokalno ali globalno spremenljivko berejo ali se bo pojavila napaka. Torej, če je napisana znotraj funkcije, potem ne sme biti nobenih težav. Toda uporaba spremenljivke, ki presega meje, bo problematična. Zato je treba pozorno spremljati strukturo sestavljanja programske kode in poskrbeti, da nikjer ni niti predpogoja za nastanek konflikta.
Druga možnost za snemanje
Ali lahko na drug način ustvarim globalno spremenljivko v PHPu? Ja in niti enega. Najprej si oglejmo $ GLOBALS. To je asociativna matrika. Ključ v njem je ime. Vrednost je vsebina globalne spremenljivke. Treba je opozoriti, da ta matrika po deklaraciji obstaja v katerem koli obsegu. To daje razloge, da je to superglobal. Izgleda takole: $ GLOBALS [`spremenljivka`].
Vnaprej definirani / superglobali
V vsakem programskem jeziku obstajajo nekatera imena, ki so zakupljena za svoje posamezne funkcije. Zato v PHPu ne morete ustvariti globalnih spremenljivk z istim imenom.
V tem programskem jeziku so posebne funkcije. Zato je pomembno, da vnaprej definirane spremenljivke nimajo nastavitve »super«, torej niso na voljo na vseh mestih. Kako lahko to popravim? Če je vnaprej določena spremenljivka na voljo na določenem lokalnem območju, jo je treba razglasiti, kot sledi: globalna "spremenljiva". Zdi se, da je enako kot prej rečeno, kajne? Res, vendar ne res. Oglejmo si primer »boj«:
- globalno $ HTTP_POST_VARS;
- echo $ HTTP_POST_VARS [`ime`].
Ali čutite razliko med njimi? Upoštevajte, da v PHP ni treba uporabljati globalne spremenljivke znotraj funkcije. Na splošno se lahko nahaja v datoteki, ki je v njej vključena.
Povezave in varnost
Kot lahko vidite, v PHP-u ustvarjanje globalne spremenljivke ni težava. Ali obstajajo kakšne značilnosti povezav? Da, lahko pri uporabi globalnega dogodka pride nepričakovano. Toda pred tem malo ozadje.
V različici 4.2.0 se je direktiva register_globals privzeto spremenila od izklopa naprej na. Za večino uporabnikov to ni zelo pomembno, a zaman. Navsezadnje to neposredno vpliva na varnost razvitega izdelka. Če želite narediti globalno spremenljivko, direktiva PHP o tem parametru ne bo neposredno vplivala na to. Toda nepravilna uporaba že lahko ustvari precedens za varnost.
Torej, če je register_globals vklopljen, pred izvedbo pisane kode se inicializirajo različne spremenljivke, ki so na primer potrebni za pošiljanje obrazcev HTML. Zato je bilo odločeno, da ga izključite.
Zakaj je stanje te direktive v php globalni spremenljivki zaradi številnih? Dejstvo je, da ko je država vklopljena, razvijalci niso vedno sposobni samostojno odgovoriti na vprašanje, iz česa je prišlo. Na eni strani je olajšala pisanje kode. Toda na drugi strani - to je povzročilo varnostno grožnjo. Zato je bilo izogibanje napakam, pa tudi mešanje podatkov in direktive onemogočeno.
In zdaj si oglejmo nezaščiteno kodo in tudi, kako zaznati primere, ko deklaracijo globalne spremenljivke PHP spremljajo poskusi nadomestitve podatkov. To je potrebno, da ustvarimo ne le lepa, temveč tudi stabilna delovna mesta, ki ne razpnejo prvega človeka, ki pride v stik.
Nevarna koda
Ugotovimo, da je spremenljivka tista, ki je bila odobrena:
če (authenticate_user ()) {
$ authorize = true-
}
če ($ pooblastite) {
vključite "/highly/sensitive/data.php"-
}
V tem stanju se lahko spremenljivka samodejno nastavi. Glede na to, da se lahko podatki enostavno zamenjajo in izvor njihovega izvora ni določen, lahko katera koli oseba opravi tak pregled in se predstavlja kot nekdo drug. Če želite, lahko napadalec (ali samo radoveden, a neizkušenec) krši logiko scenarija.
Če spremenite vrednost direktive, lahko ta koda deluje pravilno, kot jo potrebujemo. Toda inicializacija spremenljivk ni le dober ton v programiranju, temveč nam daje tudi nekaj jamstev za stabilnost scenarija.
Zanesljiva različica kode
Da bi dosegli ta cilj, lahko izklopite delo direktive ali registrirate bolj zapleteno kodo. Na primer, tukaj je naslednje:
če (isset ($ _ SESSION [`username`])))) {
echo "Pozdravljeni {$ _SESSION [`username`]}"-
} drugo {
echo "Pozdravljeni Gost
"-
echo "Lep pozdrav, uporabnik!" -
}
V tem primeru bo težko nadomestiti. Ampak še vedno je možno. Da bi to naredili, je treba paziti, da se zagotovi takojšnja orodja za odzivanje. Č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 to tudi ne zagotavlja popolne zaščite pred zamenjavo vrednosti. Toda tukaj bo iskanje možnih možnosti precej zapleteno.
Najde poskus za nadomestitev
Preverimo, kako ste razumeli, kaj ste napisali prej. V PHP globalnih spremenljivkah v funkciji, ki bodo podane spodaj, se boste morali prijaviti. Lahko rečemo, da je to na nek način domača naloga za obvladovanje teme lekcije. Tukaj je koda:
php
if (isset ($ _ COOKIE [`C_COOKIE`]))) {
} elseif (isset ($ _ GET [`C_COOKIE`]) || isset ($ _ POST [`C_COOKIE`]))) {
pošta ("[email protected]", "Opozorilo, scenarij je posnel poskus, da bi prikrili in pokvarili podatke", $ _SERVER [`REMOTE_ADDR`])
echo "Varnost je ogrožena ali jo je poskušala storiti." Administrator je priglasil "-
exit-
} drugo {
}
?>
In zdaj je to pojasnilo. Spremenljivka C_COOKIE nam prihaja iz zanesljivega vira. Da bi v celoti preverili pričakovani rezultat, preverimo njegovo vrednost in v primeru težav obvestite administratorja o tem. Če ni prišlo ničesar, ni treba ukrepati. Upoštevati je treba, da preprosto onemogočite direktivo register_globals ne zagotavljajo zaščite vaše kode. Zato je treba spremenljivko, ki jo skripta prejme od uporabnika, preveriti za pričakovano vrednost.
Zaključek
To, na splošno, in vse, kar je potrebno vedeti o globalnih spremenljivkah, da jih uspešno in varno uporabite pri svojih dejavnostih. Seveda rečemo, da je polnopravno jamstvo, da ga nihče ne more uporabiti - krekerji nenehno izboljšujejo svoje metode in spretnosti. Zato je zaželeno omejiti uporabo globalnih spremenljivk v kodi do maksimuma. Na srečo lahko ta cilj doseže strukturo in značilnosti gradnje tega programskega jezika. Srečno!
- Kako namestiti Java v operacijskem sistemu Windows 7
- Vrste spremenljivk v Pascalu: opis, lastnosti, primeri
- Svetovno računalniško omrežje je zanesljiva izmenjava informacij vsak dan
- Infinite za (Java) zanko
- Ali veste, kaj pomeni "racionalno" in katere številke imenujemo racionalno?
- jаvascript Array za shranjevanje neomejenega števila spremenljivk
- Programski jezik Python: zank
- Spremenljivka v programiranju je v celoti označena s tem, kaj?
- Razkrijte SQL: opis. Transact-SQL
- Funkcija upravljanja s časom jаvascript setInterval ()
- Sistem neenakosti je rešitev. Sistem linearnih neenakosti
- Lokalna in globalna računalniška omrežja
- Distribucijske funkcije naključne spremenljivke. Kako najti funkcijo porazdelitve naključne…
- Globalna omrežja
- Kakšen je privzeti prehod
- PHP gradnja, če je drugače: skrita logika
- Uporaba funkcije PHP naključno
- Prostor imen PHP: primer. Kako uporabljati imena imen v PHP?
- Funkcija Scanf C: opis
- Marginalna analiza in njegova vloga pri pridobivanju maksimalnega dobička s strani podjetja
- Diferencialne enačbe - splošne informacije in področje uporabe