PHP este o variabilă globală într-o funcție. Faceți variabilă globală în PHP
Pentru a crea un site cu drepturi depline, care are o funcționalitate largă, trebuie să știți multe despre el. Dar ceea ce îi poate oferi o unicitate reală este PHP. O variabilă globală în acest limbaj de programare nu este utilizată foarte des, dar uneori este necesar să știm cum funcționează. Studiind ceea ce este și cum funcționează, vom examina acest articol.
conținut
domeniu
Acesta este contextul în care este definită variabila. În cele mai multe cazuri, acestea au doar un domeniu de aplicare. Când în PHP variabilele globale sunt încărcate de la alte fișiere, atunci în ele pot fi include (includ) și necesare (necesită).
În mod implicit, acestea sunt limitate de domeniul de aplicare local al funcției. Și cum doriți ca variabila să fie văzută de fișiere în afara granițelor sale și ar putea fi folosite și ele? Pentru aceasta, PHP oferă de asemenea o variabilă globală.
Cuvântul cheie "global"
Dar cum să declarați o variabilă globală PHP? În atingerea acestui scop, cuvântul "global" ne va ajuta. Trebuie să o plasați înainte de variabila pe care doriți să o faceți globală (de exemplu, globală "Variable").
După implementarea unei astfel de instrucțiuni, orice fișier poate funcționa cu datele. Dacă undeva există referințe la această variabilă, programul va acorda întotdeauna atenție versiunii globale.
De ce o asemenea formulare ciudată? Faptul este că, simultan cu aceasta, pot exista versiuni locale. Dar acestea vor fi disponibile numai în acele dosare în care sunt declarate. Și pentru oricine altcineva, variabilele globale ale clasei PHP vor funcționa. Prin urmare, trebuie să fii atent. Și pentru a nu exista nici o îndoială, iată un exemplu de cum arată: global a.
Deoarece, dacă un fișier are acces la mai multe variabile, acest lucru îi va face să intre în conflict. Dar aici nu se poate spune exact - o variabilă locală sau globală va fi citită sau va apărea o eroare. Deci, dacă este scrisă în interiorul funcției, atunci nu ar trebui să existe probleme. Dar utilizarea unei variabile dincolo de limitele sale va fi 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ă opțiune pentru înregistrare
Pot crea o variabilă globală în PHP într-un alt mod? Da, și nici măcar unul. Mai întâi, să ne uităm la $ GLOBALS. Aceasta este o matrice asociativă. Cheia este un nume. Valoarea este conținutul variabilei globale. Trebuie remarcat faptul că această matrice după declarație există în orice domeniu de aplicare. Aceasta oferă motive să o considere superglobală. Se pare ca aceasta: $ GLOBALS [`Variable`].
Predefinite / superglobale
În fiecare limbaj de programare, există câteva nume care sunt închiriate pentru funcțiile sale individuale. Prin urmare, nu puteți crea variabile globale în PHP cu același nume.
În acest limbaj de programare există caracteristici speciale. Deci, este important ca variabilele predefinite aici să nu aibă un "super" setare, adică nu sunt disponibile în toate locurile. Cum pot remedia asta? Pentru ca o variabilă predefinită să fie disponibilă în anumite zone locale, ea trebuie declarată după cum urmează: global "Variable". Se pare că este la fel ca în trecut, nu? Adevărat, dar nu chiar. Să examinăm exemplul "combatere":
- global $ HTTP_POST_VARS;
- echo $ HTTP_POST_VARS [`name`].
Simți diferența dintre ei? Rețineți că în PHP nu este necesară utilizarea unei variabile globale în cadrul unei funcții. În general, acesta poate fi localizat într-un fișier care este inclus în el.
Legături și securitate
După cum puteți vedea, în PHP, crearea unei variabile globale nu este o problemă. Dar există vreo legătură cu legăturile? Da, poate exista un comportament neașteptat atunci când se utilizează globale. Dar înainte de asta un fundal puțin.
În versiunea 4.2.0, directiva register_globals a fost modificată în mod prestabilit, de la oprit la activat. Pentru majoritatea utilizatorilor, acest lucru nu este foarte important, dar în zadar. La urma urmelor, acest lucru afectează în mod direct siguranța produsului în curs de dezvoltare. Dacă trebuie să creați o variabilă globală, directiva PHP privind acest parametru nu o va afecta în mod direct. Dar utilizarea incorectă poate crea deja precedente pentru securitate.
Deci, dacă register_globals este activată, înainte de a executa codul scris, sunt inițializate diverse variabile, care sunt necesare, de exemplu, pentru a trimite formulare HTML. Prin urmare, sa decis să o dezactivați.
De ce starea acestei directive în php este o variabilă globală datorată multora? Faptul este că atunci când statul este în desfășurare, dezvoltatorii nu sunt întotdeauna capabili să răspundă în mod independent la întrebarea de unde a provenit. Pe de o parte, a fost mai ușor să scrieți codul. Dar, pe de altă parte, aceasta a creat o amenințare la adresa securității. Prin urmare, pentru a evita erorile, precum și amestecarea datelor și directiva a fost dezactivată.
Și acum, să examinăm codul nesigur și, de asemenea, să detectăm cazuri în care declarația variabilei globale PHP este însoțită de încercări de înlocuire a datelor. Acest lucru este necesar pentru a crea nu numai site-uri frumoase, dar și stabile, care nu sparg prima persoană care se întâlnește.
Codul periculos
Să stabilim că variabila este valabilă pentru cei care au fost autorizați:
dacă {autenate_user ()) {
$ authorize = true-
}
dacă ($ autorizează) {
include "/highly/sensitive/data.php"-
}
În această stare, variabila poate fi setată automat. Având în vedere că datele pot fi înlocuite pur și simplu, iar sursa originii lor nu este stabilită, atunci orice persoană poate trece un astfel de control și se poate impersona pe altcineva. Dacă doriți, un atacator (sau doar o persoană curioasă, dar neexperimentată) poate încălca logica scenariului.
Dacă modificați valoarea directivei, atunci acest cod poate funcționa corect, așa cum ne trebuie. Dar inițializarea variabilelor nu este doar un ton bun în programare, ci oferă și niște garanții de stabilitate a scenariului.
O versiune fiabilă a codului
Pentru a atinge acest obiectiv, puteți fie să opriți activitatea directivei, fie să înregistrați un cod mai complex. De exemplu, aici este următorul:
dacă (isset ($ _ SESSION [`username`]))) {
echo "Bună {$ _SESSION [`nume de utilizator`]}„-
} altceva {
echo "Bună musafir
„-
ecou "Salutări, utilizator!" -
}
În acest caz, va fi dificil să se facă o înlocuire. Dar totuși este posibil. Pentru a face acest lucru, trebuie avut grijă să se asigure că sunt furnizate instrumente de răspuns prompt. Dacă trebuie să includeți variabile globale în PHP, atunci puteți folosi următorul instrument: dacă știm în ce limită se va găsi valoarea, putem să o înregistrăm astfel încât scriptul să verifice acest lucru folosind o mapare. Desigur, acest lucru nu garantează, de asemenea, o protecție completă împotriva substituției valorilor. Dar aici căutarea opțiunilor posibile va complica considerabil.
Găsește o încercare de înlocuire
Să verificăm cum ați înțeles ceea ce ați scris mai devreme. În PHP variabilele globale în funcție, care vor fi furnizate mai jos, va trebui să vă declarați. Se poate spune că aceasta este într-un fel o temă de temă pentru a stăpâni tema lecției. Iată codul:
php
dacă {isset ($ _ COOKIE [`C_COOKIE`])) {
} elseif (isset ($ _GET [`C_COOKIE`]) || isset ($ _ POST [`C_COOKIE`])
mail ("[email protected]", "Avertisment, scriptul a înregistrat o încercare de a hack și spoof datele", $ _SERVER [`REMOTE_ADDR`])
echo "Securitatea a fost compromisă sau a încercat să facă acest lucru." Administrator notificat "-
exit-
} altceva {
}
?>
Și acum o explicație pentru asta. Variabila C_COOKIE vine de la o sursă sigură. Pentru a verifica complet rezultatul așteptat, verificăm valoarea sa și, în caz de probleme, anunțați administratorul despre acest lucru. Dacă nu a venit nimic, atunci nu trebuie luată nicio măsură. Trebuie să înțelegeți că dezactivarea pur și simplu a directivei register_globals nu face codul sigur. Prin urmare, orice variabilă pe care scriptul o primește de la utilizator trebuie verificată pentru valoarea așteptată.
concluzie
Aceasta, în general, și tot ce este necesar să cunoaștem despre variabilele globale, pentru a le folosi cu succes și în siguranță în activitățile lor. Desigur, să spun că există o garanție deplină că nimeni nu o poate folosi - biscuiții își îmbunătățesc constant metodele și abilitățile. Prin urmare, este de dorit să se limiteze utilizarea variabilelor globale în cod la maxim. Din fericire, structura și caracteristicile construcției acestui limbaj de programare pot atinge acest obiectiv. Mult noroc!
- Cum se instalează Java pe Windows 7
- Tipuri de variabile în Pascal: descriere, proprietăți, exemple
- Modificarea este ce? Tipuri de modificări
- Grafica în Pascal: trăsături, moduri de creare și exemple
- Infinit pentru (Java) buclă
- jаvascript Array pentru a stoca un număr nelimitat de variabile
- Variabila în programare este complet caracterizată de ce?
- Ecuația de regresie
- Declarați SQL: descriere. Transact-SQL
- Variabilitate variabilă, variabilă și variabilă
- Variabila endogenă este ce?
- Regresie liniară
- Intrare și ieșire în Python. Introduceți și imprimați
- Funcții în Python: def. Python 3 pentru începători
- Construcția PHP dacă altceva: logică ascunsă
- Cum se scrie într-un fișier din Java
- Utilizarea aleatorie a funcției PHP
- Spațiu de nume PHP: Un exemplu. Cum se utilizează spațiile de nume în PHP?
- Ecuații diferențiale - Informații generale și domeniu de aplicare
- Care sunt tipurile de date din Pascal?
- Tip structurat - matrice unidimensională