RačunalaSoftver

PHP globalna varijabla u funkciji. Napravite globalna varijabla u PHP

Da biste kreirali Puna verzija, koja ima široku funkcionalnost što trebate znati mnogo. Ali ono što mogu da ga zaista jedinstveno - to je PHP. Globalna varijabla u programskom jeziku se ne tako često koristi, ali ponekad da znam kako se to radi, a ponekad je to potrebno. To je studija o tome šta je to i kako se to radi, mi ćemo učiniti u ovom članku.

djelokrug

Tako zovu kontekst u kojem određuje varijabla i. U većini slučajeva, oni imaju samo jedan opseg. Kada PHP globalne varijable učitavaju iz drugih datoteka, onda to može biti inclusive (uključuje) i potrebne (zahtijevaju).

Po defaultu, oni su ograničeni na lokalnim opseg funkcija. I kako da se varijabla vidi datoteke u svoje granice, što bi moglo još i korištenje? U tom cilju, a dat je u globalne varijable PHP.

Za riječ "Global"

A evo kako da proglasi globalna varijabla u PHP? U ostvarivanju tog cilja pomoći će nam riječ "globalno". To je potrebno da se ispred varijabla koja želite da globalni (narimer, globalni «The Variable").

Nakon implementacije takvih indikacija, podaci će biti u mogućnosti da rade s bilo koje datoteke. Ako negdje postoje reference na ovu varijablu, program će uvijek obratiti pažnju na globalnoj verziji.

Zašto takav čudan jezik? Činjenica da u isto vrijeme ne mogu biti lokalni verzije. Ali da li će oni biti dostupni isključivo za ove datoteke, gdje je najavio. A za sve ostalo će se ponašati globalne varijable PHP klase. Zbog toga morate biti oprezni. I da nije bilo nikakve sumnje, evo primjer kako izgledaju: globalni a.

Jer ako će jednu datoteku imati pristup velikom broju varijabli, to će dovesti do njihovog sukoba. Ali ne možemo sa sigurnošću reći - lokalna ili globalna varijabla se čita ili potpuno ne. Dakle, ako je da se registrujete u funkciji, ne bi trebalo biti nikakvih problema. Ali korištenje varijable za svoje granice biti problematično. Stoga, struktura izrade koda potrebno pomno pratiti i pobrinite se da nigdje je tu čak i preduvjet za navedene sukob nastao.

Još jedna utjelovljenje snimanje

Da li je moguće u PHP-u da se stvori globalna varijabla na neki drugi način? Da, čak ni jedan. Prvo, razmotrimo $ GLOBALS. Ovo je asocijativni niz. Ključ za to - je ime. Kao vrijednost sadržaja djeluje kao globalnu varijablu. Treba napomenuti da je niz nakon objave postoji u bilo kojem obimu. To daje razloga da vjerujem superglobalne. Izgleda tako: $ GLOBALS [ 'varijabla'].

Predefinisanih / superglobals

U svakom programskom jeziku postoje neka imena koja su u najmu za neke od svojih funkcija. Dakle, da se stvori u PHP globalne varijable istog imena neće raditi.

Ovaj programski jezik ima svoje karakteristike. Dakle, važno je da se unapred definisane varijable ovdje ne instalirate "super", to jest, oni nisu dostupni na svim lokacijama. Kako mogu popraviti? Predefinisanim varijable bile dostupne u nekim lokalnom području, mora biti proglašen kako slijedi :. Global «Variable" Čini se da je isti kao i prije rekao, zar ne? To je istina, ali ne sasvim. Pogledajmo već "borba" primjer:

  • globalni $ HTTP_POST_VARS;
  • echo $ HTTP_POST_VARS [ 'ime'].

Možete osjetiti razliku između njih? Imajte na umu da u PHP globalne varijable ne mora nužno da se koriste unutar funkcije. Može se čak može staviti u datoteku koja je uključena u to.

Veze i sigurnost

Kao što možete vidjeti, u PHP stvoriti globalnu varijablu nije problem. Ali ima li određeni relativni linkovi? Da, može doći do neočekivanog ponašanja kada se koristi globalno. Ali prije toga, malo pozadinsku priču.

U verziji 4.2.0 direktive po defaultu register_globals promijenjen iz on-država na off. Za većinu korisnika, to nije jako važno, ali uzalud. Na kraju krajeva, to direktno utiče na sigurnost razvijenih proizvoda. Ako je potrebno da bi varijabla globalna, PHP-direktivu o ovaj parametar nije direktno ugrožena. Međutim, nepravilne upotrebe već mogu stvoriti sigurnost presedane.

Dakle, ako register_globals je uključen, prije izvršenja pismenog kod inicijaliziran različite varijable koje su potrebne, na primjer za slanje HTML forme. Zbog toga je odlučeno da biste ga isključili.

Zašto je država ove direktive u php globalna varijabla duguje mnogo? Činjenica je da kada država programeri ne uvijek sa sigurnošću mogli da se odgovori na pitanje odakle je došao. S jedne strane, to je lakše pisati kod. Ali, s druge - to je sigurnosni rizik. Stoga, da bi izbjegli greške, kao i podaci miješanje i direktiva je onemogućena.

Pogledajmo sada ne / secure code, kao i kako da otkrije slučajeve u kojima je najava globalnog PHP varijabla u pratnji pokušaja ometanja sa podacima. To je potrebno da bi se stvorio ne samo lijepa, ali i stalno rade lokacijama koje ne puca prvi dostupni osoba.

malicioznog koda

Hajde da to varijabla važi i za one koji su ovlašteni:

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

if ($ authorize) {
uključuju "/highly/sensitive/data.php";
}

U ovom stanju, varijabla se može automatski. S obzirom da se podaci jednostavno se mogu zamijeniti, a izvor njihovog nastanka nije postavljen, onda svatko može proći takav test i da se pretvaram da sam neko drugi. Ako želite, napadač (ili samo radoznao ali neiskusni osoba) može biti umanjena, naša logika.

Ako se promijeniti vrijednost direktive, ovaj kod će raditi ispravno, kao što smo to potrebno. Ali inicijalizacije varijabli nije samo dobar ton u programiranju, ali i daje nam određenu garanciju stabilnosti skripte.

Pouzdan verzija koda

možete isključiti ili rade direktive, ili propisati kompleksniji kod za postizanje tog cilja. Na primjer, ovako:

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

echo "Zdravo {$ _ SESSION [ 'username']} ";

} Else {

echo "Zdravo Gost
";
echo "Dobrodošli korisnik!";

}

Izvrši izmjenu u ovom slučaju, da će biti teško. Ali ipak - moguće. Da biste to učinili, morate voditi računa da su dobili alat brz odgovor. Ako želite da uključite globalne varijable u PHP-u, možete koristiti sljedeće alate: ako znamo šta je raspon je vrijednost koja se dobije, moguće je da se registrujete skriptu ovom provjerite sa utakmice. Naravno, isto tako ne garantira potpunu zaštitu protiv izmjena vrijednosti. Ali to je previše opcija znatno kompliciraju.

Pronalazi pokušaja da se maskiraju

Da vidimo kako se razumijete ranije napisano. U PHP globalne varijable u funkciji koji će biti naveden u nastavku, morat ćete se prijaviti. Možemo reći da je to neka vrsta zadaću na asimilaciju lekciju temu. Ovdje je kod:

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

mail ( "administrarot@example.com", "Pažnja, skripta je zabilježen pokušaj provale i manipulacija sa podacima", $ _SERVER [ 'REMOTE_ADDR']);
echo "Bilo je razbijeno sigurnosno ili pokušavati da to učinite obavijestio administratora.";
izlaz;

} Else {
}
?>

Sada objašnjenje uz nju. Dijelom C_COOKIE nam dolazi iz pouzdanog izvora. Da biste u potpunosti namiruju prema očekivani rezultat, mi provjeriti svoju vrijednost i obavijestiti administratora u slučaju problema. Ako ne dođe, onda nikakva akcija i nije bilo potrebno da bi. Morate shvatiti da jednostavno onemogućavanje register_globals direktiva ne napraviti svoj broj sigurna. Stoga, bilo koje varijable koja prima skriptu od korisnika, treba provjeriti za očekivana vrijednost.

zaključak

Evo, u cjelini, a sve što trebate znati o globalnoj varijabli da ih uspješno i sigurno koristiti u svom radu. Naravno, reći da postoji puna garancija da niko neće koristiti ih ne mogu - napadači su stalno poboljšanje svoje metode i vještine. Stoga je poželjno da se ograniči maksimalno korištenje globalnih varijabli u kodu. Na sreću, struktura i dizajn karakteristike ovog programskog jezika mogu postići taj cilj. Sretno!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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