Računala, Softver
PHP globalna varijabla u funkciji. Napravite globalnu varijablu u PHP
Za stvaranje pune stranice, koja ima široku funkcionalnost što trebate znati puno. Ali što mogu učiniti ga uistinu jedinstven - to je PHP. Globalna varijabla u programskom jeziku se ne koristi često, ali ponekad se zna kako se to radi, ponekad je potrebno. To je studija o tome što je to i kako se to radi, mi ćemo učiniti u ovom članku.
djelokrug
Prema zadanim postavkama, oni su ograničeni na lokalnoj opseg funkcija. A kako bi promjenjivih vidjeti datoteke u svojim granicama, što bi moglo više i koristiti? U tu svrhu, te je u PHP globalne varijable.
Ključna riječ „globalno”
Nakon provedbe takve naznake, podaci će biti u mogućnosti da rade s bilo koje datoteke. Ako negdje postoji reference na ove varijable, program će uvijek obratiti pozornost na globalnoj verziji.
Zašto tako čudno jezik? Činjenica da je u isto vrijeme mogu biti lokalne verzije. No, oni će biti dostupan isključivo za one datoteke gdje najavljene. A za sve ostalo će djelovati globalne varijable PHP klase. Zato morate biti oprezni. I to nije bilo sumnje, ovdje je primjer kako izgledaju: globalno a.
Jer ako jedna datoteka će imati pristup velikom broju varijabli, to će izazvati ih da u sukobu. No, ne možemo sa sigurnošću reći - lokalna ili globalna varijabla se čita ili uopce ne. Dakle, ako se želi registrirati u funkciji, to bi trebao biti nikakav problem. No, korištenje varijable za svojih granica biti problematično. Dakle, struktura izrade koda potrebnog za pažljivo praćenje i provjerite da nigdje nema ni preduvjet za navedenu sukob nastao.
Slijedeća varijanta snimke
Unaprijed / superglobals
U svakom programskom jeziku postoje imena koja su u najmu za neke od svojih funkcija. Dakle, stvoriti u PHP globalnih varijabli istog imena neće raditi.
Ovaj programski jezik ima svoje karakteristike. Dakle, važno je da su prethodno definirane varijable ovdje ne instalirate „super”, to jest, oni nisu dostupne na svim lokacijama. Kako to mogu popraviti? Za predefinirane varijable bio je dostupan na nekom lokalnom području, mora biti navedena na sljedeći :. Global «varijabla” Čini se da je isti kao i prije rekao, zar ne? To je istina, ali ne sasvim. Pogledajmo već „bori” primjer:
- Globalna $ HTTP_POST_VARS;
- echo $ HTTP_POST_VARS [ 'ime'].
Vi osjetite razliku između njih? Imajte na umu da je u PHP globalne varijable ne mora da se koristi u funkciji. To čak može biti smješten u datoteci koja je uključena u njemu.
Linkovi i sigurnost
Kao što možete vidjeti, u PHP stvoriti globalna varijabla nije problem. No, je li bilo posebnih relativne veze? Da, može se neočekivano ponašanje prilikom korištenja globalne. No, prije toga, malo sporednu.
U verziji 4.2.0 Direktiva po defaultu register_globals promijenio od o-stanju isključen. Za većinu korisnika, to nije jako važno, ali uzalud. Uostalom, to je izravno utječe na sigurnost razvijenog proizvoda. Ako trebate napraviti je promjenjiva globalna, PHP-direktiva o ovom parametru nije izravno pogođeni. Međutim, pogrešna uporaba već može dovesti do presedana sigurnost.
Dakle, ako register_globals uključen, prije nego izvršenje pisanog koda ponište različite varijable koje su potrebne, na primjer, za slanje HTML-oblika. Stoga je odlučeno da biste ga isključili.
Zašto je stanje ove direktive u PHP globalne varijable duguje? Činjenica je da kad se stanje programeri ne moraju uvijek sa sigurnošću mogli odgovoriti na pitanje gdje je došao iz. S jedne strane, to je lakše pisati kod. No, s druge strane - to je sigurnosni rizik. Stoga, kako bi se izbjegle pogreške, kao i podatke za miješanje i direktiva onemogućen.
Pogledajmo sada ne / sigurnosni kod, kao i kako otkriti slučajeve u kojima je najava globalnog PHP varijable popraćena pokušaj neovlaštenog rukovanja s podacima. To je potrebno kako bi se stvorili ne samo lijepa, nego i stalno rade stranice koje ne pucaju prvi dostupan osobu.
zlonamjernog koda
Idemo postaviti da varijabla vrijedi i za one koji su ovlašteni:
if (authenticate_user ()) {
$ Autorizirati = true;
}
if ($ autorizirati) {
"uključuju /highly/sensitive/data.php";
}
U tom stanju, varijabla može se postaviti automatski. S obzirom da se podaci mogu se jednostavno zamijeniti, i izvor njihovog podrijetla nije postavljen, onda svatko može proći takav test i praviti se da je netko drugi. Po želji, napadač (ili samo znatiželjan, ali neiskusna osoba) može umanjiti našu logiku.
Ako promijenite vrijednost direktive, ovaj kod će raditi ispravno, kao što smo to potrebno. No, inicijalizacija varijabli nije samo dobar ton u programiranju, ali i daje nam određenu jamstvo stabilnosti skripte.
Pouzdan verzija koda
možete isključiti ili raditi direktive, ili propisati složeniji kod postizanja tog cilja. Na primjer, ovako:
if (isset ($ _ SESSION [ 'ime'])) {
echo "Halo _ $ {SESSION [ 'ime']} b>";
} Else {
echo "Pozdrav Gost b>
";
echo "Welcome korisnika!";
}
Napraviti izmjenu u ovom slučaju, bit će teško. Ali ipak - moguće. Da biste to učinili, morate se pobrinuti da brzo alati odgovor su dobili. Ako želite uključiti globalne varijable u PHP-u, možete koristiti sljedeće alate: ako znamo što je raspon je dobivena vrijednost, moguće je registrirati skriptu za provjeru ovo sa utakmice. Naravno, to također ne jamči potpunu zaštitu od zamjenskih vrijednosti. Ali to je previše opcija znatno kompliciraju.
Nalazi pokušaje maskenbal
Da vidimo kako ste shvatiti napisano ranije. U PHP globalne varijable u funkciji koja će se dati u nastavku, morat ćete se prijaviti. Možemo reći da je to neka vrsta domaće zadaće na asimilaciju lekcije temu. Ovdje je kod:
Php
if (isset ($ _ COOKIE [ 'C_COOKIE'])) {
} Elseif (isset ($ _ dobiti [ 'C_COOKIE']) || isset ($ _ POST [ 'C_COOKIE'])) {
pošte ( „administrarot@example.com”, „Pažnja, skripta je zabilježen pokušaj provale i petljanja s podacima”, _SERVER $ [ „REMOTE_ADDR”]);
echo „Bilo je slomljena sigurnost ili pokušaj da se to učini obavijestio administratora”.;
izlaz;
} Else {
}
?>
Sada objašnjenje tome. Djelomično C_COOKIE nam dolazi iz pouzdanog izvora. Kako bi u potpunosti zadovoljio prema očekivanom rezultatu, provjerite smo svoju vrijednost i obavijestiti administratora u slučaju problema. Ako to ne dolazi, onda nikakva akcija i nije potrebno da se napravi. Morate shvatiti da jednostavno onemogućiti register_globals Direktiva ne bi vaš kod je sigurna. Stoga, bilo koja od varijabli koje dobiva skriptu od korisnika, treba provjeriti za očekivane vrijednosti.
zaključak
Ovdje, u cjelini, a sve što trebate znati o globalnim varijablama kako bi ih uspješno i sigurno koristiti u svom radu. Naravno, reći da postoji puna garancija da nitko neće koristiti ih ne mogu - napadači su stalno poboljšanje njihove metode i vještine. Stoga je poželjno ograničiti maksimalno korištenje globalnih varijabli u kodu. Srećom, struktura i dizajn značajke ovog programskog jezika mogu postići taj cilj. Sretno!
Similar articles
Trending Now