RačunalaSoftver

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

Dakle, poziv kontekst u kojem određuje varijabla i. U većini slučajeva, oni imaju samo jedan opseg. Kada PHP globalne varijable učitati iz druge datoteke, onda to može biti uključeno (uključuje) i potreban (potrebna).

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”

I ovdje je kako proglasiti globalna varijabla u PHP? U postizanju tog cilja će nam pomoći riječ „globalno”. Potrebno je postaviti ispred varijable koju želite načiniti globalnu (narimer, globalni «varijabla").

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

Je li moguće u PHP stvoriti globalnu varijablu na drugi način? Da, niti jedan. Prvo, neka je uzeti u obzir $ globals. To je asocijativni niz. Ključ za njega - je ime. Kao što je vrijednost sadržaja djeluje kao globalne varijable. Treba napomenuti da je niz nakon objave postoji u bilo kojem opsegu. To daje razloga da vjerujem u to superglobal. To izgleda tako: $ globals [ 'varijabla'].

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']} ";

} Else {

echo "Pozdrav Gost
";
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:

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

 

 

 

 

Newest

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