CalculatoareSoftware-ul

PHP variabilă la nivel mondial în funcție. Faceți o variabilă globală în PHP

Pentru a crea un site complet, care are o funcționalitate largă trebuie să știi multe. Dar ce poate face el cu adevărat unic - este PHP. Variabila globală în limbajul de programare nu este folosit foarte des, dar, uneori, să știe cum funcționează, uneori este necesar. Acesta este studiul a ceea ce este și cum funcționează, vom face în acest articol.

domeniu

Deci, suna contextul în care variabila și determinată. În cele mai multe cazuri, acestea au doar un singur domeniu de aplicare. Când PHP variabile globale încărcate de la alte fișiere, atunci acesta poate fi inclusiv (includ) și este necesar (necesită).

În mod implicit, acestea sunt limitate la domeniul de aplicare funcția locală. Și cum să facă variabile fișiere văzute în limitele sale, care ar putea mai mult și de a folosi? În acest scop, și este furnizat în variabilele globale PHP.

Cuvântul cheie „global“

Și aici este cum să declare o variabilă globală în PHP? În atingerea acestui obiectiv ne va ajuta cuvântul „global“. Este necesar să se plaseze în fața variabilei pe care doriți să o facă la nivel mondial (narimer, la nivel mondial «variabila").

După punerea în aplicare a unei astfel de indicații, datele vor putea lucra cu orice fișier. Dacă undeva există referiri la această variabilă, programul va plăti întotdeauna o atenție la versiunea globală.

De ce un astfel de limbaj ciudat? Faptul că, în același timp, pot exista versiuni locale. Dar ele vor fi disponibile exclusiv pentru acele fișiere în cazul în care anunțate. Și pentru tot restul va acționa variabile globale clasa PHP. De aceea trebuie sa fii atent. Și că nu a existat nici o îndoială, aici este un exemplu de ceea ce arata ca: un nivel global.

Pentru că dacă un fișier va avea acces la o serie de variabile, aceasta va face ca acestea să intre în conflict. Dar nu putem spune sigur - locală sau globală variabilă este citit sau nu cu totul. Deci, dacă este să se înregistreze într-o funcție, ar trebui să fie nici o problemă. Dar utilizarea unei variabile pentru granițele sale să fie problematică. Prin urmare, structura elaborarea codului necesar pentru a monitoriza îndeaproape și asigurați-vă că nicăieri există chiar și o condiție prealabilă pentru conflictul menționat a apărut.

O altă realizare a înregistrării

Este posibil în PHP pentru a crea o variabilă globală într-un alt mod? Da, nici măcar unul. În primul rând, să ia în considerare $ GLOBALS. Acesta este un tablou asociativ. Cheia pentru ea - este numele. Deoarece valoarea conținutului acționează ca o variabilă globală. Trebuie remarcat faptul că există matrice după anunțarea, în orice domeniu de aplicare. Acest lucru dă un motiv să cred superglobale. Se pare, astfel: $ GLOBALS [ 'variabila'].

Superglobals / Predefinite

În fiecare limbaj de programare există unele nume care sunt închiriate pentru unele dintre funcțiile sale. Prin urmare, pentru a crea în PHP variabile globale ale aceluiași nume nu va funcționa.

Acest limbaj de programare are propriile sale caracteristici. Deci, este important ca variabilele predefinite aici nu sunt instalați „super“, adică, ele nu sunt disponibile în toate locațiile. Cum pot repara? Pentru variabile predefinite a fost disponibil la unele zone locale, acesta trebuie să fie declarate după cum urmează :. «Variabila globală“ Pare să fie la fel ca înainte de spus, nu? Este adevărat, dar nu destul. Să ne uităm la deja „lupta“ un exemplu:

  • $ La nivel mondial HTTP_POST_VARS;
  • echo $ HTTP_POST_VARS [ 'nume'].

Tu simți diferența dintre ele? Rețineți că, în PHP variabile globale nu trebuie neapărat să fie utilizate în cadrul funcției. Acesta poate fi chiar și plasat într-un fișier care este inclus în ea.

Link-uri și de siguranță

După cum puteți vedea, în PHP a crea o variabilă globală nu este o problemă. Dar există orice link-uri relative particulare? Da, pot exista un comportament neașteptat atunci când se utilizează la nivel mondial. Dar, înainte de asta, un pic backstory.

În versiunea 4.2.0 directiva prin register_globals implicit schimbat de la la-stat la off. Pentru majoritatea utilizatorilor, acest lucru nu este foarte important, dar în zadar. La urma urmei, aceasta afectează în mod direct securitatea produsului dezvoltat. Dacă aveți nevoie pentru a face variabila globală, PHP-directiva privind acest parametru nu este afectat în mod direct. Cu toate acestea, utilizarea incorectă poate crea deja de securitate precedente.

Deci, dacă register_globals este pornit, înainte de executarea codului scris inițializat diferitele variabile care sunt necesare, de exemplu, pentru a trimite HTML-forme. Prin urmare, sa decis să-l opriți.

De ce este starea acestei directive în variabilă globală php datorează mult? Faptul este că, atunci când starea de dezvoltatorii nu întotdeauna cu certitudine ar putea să se răspundă la întrebarea de unde a venit. Pe de o parte, este mai ușor să scrie cod. Dar, pe de altă parte - este un risc de securitate. Prin urmare, pentru a evita erorile, precum și datele de amestecare și Directiva a fost dezactivat.

Acum, să ne uităm nu codul / sigur, precum și modul de a detecta cazurile în care anunțarea variabilei PHP la nivel mondial este însoțită de încercări de desigilare cu date. Acest lucru este necesar pentru a crea nu numai frumoase, dar, de asemenea, în mod constant site-uri care nu crack prima persoană disponibilă de lucru.

cod rău intenționat

Să stabilim că variabila este valabil și pentru cei care au fost autorizate:

if (authenticate_user ()) {
$ = True Autorizați;
}

if ($ authorize) {
includ "/highly/sensitive/data.php";
}

În această stare, variabila poate fi setată automat. Având în vedere că datele pot fi pur și simplu înlocuite, iar sursa de originea lor nu este setat, atunci oricine poate trece un astfel de test și pretind a fi altcineva. Dacă se dorește, atacatorul (sau doar curios, dar lipsit de experiență) poate fi afectată, logica noastră.

Dacă vom schimba valoarea directivei, acest cod va funcționa corect, așa cum este necesar. Dar inițializarea variabilelor nu este doar un ton bun în programarea, dar, de asemenea, ne oferă o anumită garanție a stabilității script-ul.

Versiunea fiabilă a codului

puteți dezactiva sau funcționează directive, sau prescrie un cod mai complex pentru a atinge acest obiectiv. De exemplu, ca aceasta:

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

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

} Else {

echo "Bună ziua invitat
";
echo "utilizator Bine ai venit!";

}

Faceți o substituție în acest caz, va fi dificil. Dar totuși - este posibil. Pentru a face acest lucru, trebuie să aibă grijă ca au fost furnizate instrumentele de reacție rapidă. Dacă doriți să includeți variabile globale în PHP, puteți utiliza următoarele instrumente: dacă știm ce intervalul este valoarea obținută, este posibil să se înregistreze un script pentru a verifica acest lucru cu un meci. Desigur, de asemenea, nu garantează o protecție completă împotriva valorilor de substituție. Dar asta e prea mult opțiuni complica în mod semnificativ.

Descoperiri încercări de mascaradă

Să vedem cum ați înțeles scris mai devreme. În PHP variabile globale în funcția care va fi dat mai jos, va trebui să le declare. Putem spune că acest lucru este un fel de teme privind asimilarea subiectului lecție. Aici este codul:

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

e-mail ( "administrarot@example.com", "Atenție, scenariul a fost înregistrat încercări de spargere și manipularea frauduloasă a datelor", $ _SERVER [ 'REMOTE_ADDR']);
echo „Nu a fost o siguranță rupt sau să încerce să facă acest lucru notificat administratorul.“;
ieșire;

} Else {
}
?>

Acum, explicația acesteia. Parțial C_COOKIE vine la noi dintr-o sursă de încredere. Pentru a satisfăcut pe deplin în funcție de rezultatul așteptat, vom verifica valoarea sa și notifică administratorului în caz de probleme. În cazul în care nu vine, atunci nici o acțiune și nu trebuie să facă. Trebuie să înțeleagă că pur și simplu dezactivând Directiva register_globals nu face codul este securizat. Prin urmare, orice variabilă care primește un script de utilizator, ar trebui să fie verificate pentru valoarea așteptată.

concluzie

Aici, în general, și tot ce trebuie să știți despre variabilele globale pentru a le folosi cu succes și în condiții de siguranță în activitatea lor. Desigur, să spunem că există o garanție completă că nimeni nu va folosi ei nu pot - atacatorii se îmbunătățesc în mod constant metodele și abilitățile lor. Prin urmare, este de dorit să se limiteze utilizarea maximă a variabilelor globale în codul. Din fericire, caracteristicile de structură și de design ale acestui limbaj de programare poate atinge acest obiectiv. Mult noroc!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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