OrdinadorsProgramari

PHP variable global en la funció. Fer una variable global en PHP

Per crear un lloc complet, que compta amb una àmplia funcionalitat que necessita saber molt. Però el que pot fer que ell veritablement únic - és PHP. La variable global en el llenguatge de programació no s'utilitza molt sovint, però de vegades per saber com funciona, de vegades és necessari. Aquest és l'estudi del que és i com funciona, farem en aquest article.

abast

Així que truqui el context en el que va determinar la variable i. En la majoria dels casos, només tenen un àmbit d'aplicació. Quan les variables globals de PHP carreguen des d'altres arxius, llavors pot ser inclòs (incloure) i requerida (requereix).

Per defecte, es limiten a l'àmbit local de la funció. I com fer que els visualitzats variables en les seves fronteres, el que podria més i usar? Amb aquesta finalitat, i es proporciona en les variables globals de PHP.

La paraula clau "global"

I aquí és com declarar una variable global a PHP? En l'assoliment d'aquest objectiu ens ajudarà la paraula "global". Cal col·locar davant de la variable que es vol fer un mundial (narimer, global «La variable").

Després de l'execució d'aquesta indicació, les dades seran capaços de treballar amb qualsevol arxiu. Si en algun lloc hi ha referències a aquesta variable, el programa sempre es presta atenció a la versió global.

Per què una llengua tan estranya? El fet que al mateix temps pot haver versions locals. Però estaran disponibles exclusivament per a aquests arxius van ser anunciades. I per tota la resta actuarà variables globals classe PHP. Per tant cal anar amb compte. I que no hi havia cap dubte, aquí hi ha un exemple del que semblen: 1 mundial.

Perquè si un arxiu tindrà accés a una sèrie de variables, que farà que entrin en conflicte. Però no podem dir amb certesa - es llegeix local o global variable o falla completament. Per tant, si es tracta de donar d'alta en una funció, no hauria de ser un problema. Però l'ús d'una variable de les seves fronteres a ser problemàtic. Per tant, l'estructura de la redacció del codi necessari vigilar de prop i assegurar-se que enlloc hi ha fins i tot un requisit previ per a aquest conflicte va sorgir.

Una altra realització de l'enregistrament

És possible en PHP per crear una variable global d'una altra manera? Sí, ni tan sols un. En primer lloc, anem a considerar els $ GLOBALS. Aquest és un arranjament associatiu. La clau per a això - és el nom. A mesura que el valor dels continguts actua com una variable global. Cal assenyalar que hi ha la matriu després de l'anunci en qualsevol àmbit. Això dóna raons per creure que superglobal. Es veu tan: $ GLOBALS [ 'variable'].

Predefinits / superglobales

En qualsevol llenguatge de programació que hi ha alguns noms que es va llogar per algunes de les seves funcions. Per tant, per crear en PHP variables globals del mateix nom, no funcionarà.

Aquest llenguatge de programació té les seves pròpies característiques. Per tant, és important que les variables predefinides aquí no són la instal·lació de "super", és a dir, que no estan disponibles en tots els llocs. Com puc solucionar-ho? Per estava disponible variables predefinides en alguna àrea local, ha de ser declarat de la següent manera:. «Variable global" Sembla ser la mateixa que abans dit, oi? És cert, però no del tot. Vegem ja "combatre" un exemple:

  • $ HTTP_POST_VARS mundial;
  • echo $ HTTP_POST_VARS [ 'nom'].

Se sent la diferència entre ells? Cal destacar que en les variables globals de PHP no necessàriament ha de ser utilitzat dins de la funció. Fins i tot es pot posar en un arxiu que s'inclou en ella.

Enllaços i seguretat

Com es pot veure, en PHP crear una variable global no és un problema. Però, hi ha alguna enllaços relatius en particular? Sí, pot haver-hi un comportament inesperat quan s'utilitza global. Però abans d'això, una mica d'història de fons.

En la versió 4.2.0 de la directiva register_globals per defecte canvia d'estat d'encesa a apagat. Per a la majoria dels usuaris, això no és molt important, però en va. Després de tot, que afecta directament la seguretat del producte desenvolupat. Si vostè necessita per fer la variable, PHP-directiva global sobre aquest paràmetre no està directament afectada. No obstant això, l'ús incorrecte ja es pot crear precedents de seguretat.

Així que si register_globals està activat, abans de l'execució del codi escrit inicialitzat les diferents variables que es necessiten, per exemple per enviar HTML a formularis. Per tant, es va decidir apagar-lo.

Per què l'estat d'aquesta directiva a la variable global php deu molt? El fet és que quan l'estat dels desenvolupadors no sempre amb certesa podria mateixos respondre a la pregunta d'on va venir. D'una banda, és més fàcil escriure codi. Però de l'altra - és un risc de seguretat. Per tant, per evitar errors, així com les dades de barreja i la directiva s'ha desactivat.

Ara anem a veure no / codi de seguretat, així com la manera de detectar els casos en que l'anunci de la variable de PHP mundial va acompanyada d'intents de manipulació de dades. Això és necessari per tal de crear no només bonic, sinó també de manera constant els llocs que no s'esquerden la primera persona de treball disponible.

codi maliciós

Anem a establir aquesta variable és cert per a aquells que han estat autoritzats:

si (authenticate_user ()) {
Autoritzar $ = true;
}

if ($ autoritzar) {
incloure "/highly/sensitive/data.php";
}

En aquest estat, la variable es pot ajustar automàticament. Tenint en compte que les dades només poden ser reemplaçats, i la font del seu origen no es troba, llavors qualsevol pot passar una prova d'aquest tipus i fingir ser una altra persona. Si es desitja, l'atacant (o simplement curiositat però inexpert persona) es pot veure afectada, la nostra lògica.

Si canviem el valor de la directiva, el codi funcionarà correctament, ja que requereix. Però la inicialització de variables no és només un bon to en la programació, sinó que també ens dóna una certa garantia de l'estabilitat de la seqüència de comandaments.

versió fiable del codi

pot desactivar o directives treballar, o prescriure un codi més complex per aconseguir aquest objectiu. Per exemple, així:

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

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

} Else {

echo "Hola visitants
";
echo "Benvingut usuari";

}

Un home menys en aquest cas, no serà difícil. Però tot i així - és possible. Per a això, s'ha de tenir cura que es van proporcionar les eines de resposta ràpida. Si voleu incloure variables globals en PHP, pot utilitzar les següents eines: si sabem el que la gamma és el valor obtingut, és possible registrar un script per comprovar això amb un fòsfor. Per descomptat, també no garanteix una protecció total contra els valors de substitució. Però això és massa opcions compliquen significativament.

Troba els intents de mascarada

Anem a veure com vostè entén escrit anteriorment. En PHP les variables globals de la funció que s'indiquen a continuació, haurà de declarar-se. Podem dir que aquest és un tipus de tasca en l'assimilació del tema de la lliçó. Aquí està el codi:

if (isset ($ _ [ 'C_COOKIE']) COOKIE) {
} ELSEIF (isset ($ _ GET [ 'C_COOKIE']) || isset ($ _POST [ 'C_COOKIE'])) {

electrònic ( "administrarot@example.com", "Atenció, el guió es va registrar intent de robatori i la manipulació de les dades", $ _SERVER [ 'REMOTE_ADDR']);
echo "Hi va haver una seguretat trencat o intent de fer-ho notificat a l'administrador.";
sortida;

} Else {
}
?>

Ara explicació a aquesta. C_COOKIE part ens ve d'una font fiable. Per satisfet plenament d'acord amb el resultat esperat, vam comprovar el seu valor i notificar a l'administrador en cas de problemes. Si no ve, llavors cap acció i no necessitava fer. Vostè ha d'entendre que simplement desactivar register_globals no fa que el seu codi és segur. Per tant, qualsevol variable que rep un script per part de l'usuari, s'ha de comprovar el valor esperat.

conclusió

Aquí, en general, i tot el que necessita saber sobre les variables globals per utilitzar amb èxit i seguretat a la feina. Per descomptat, dir que hi ha una total garantia que ningú va a usar-los no pot - atacants estan constantment millorant els seus mètodes i habilitats. Per tant, és desitjable limitar l'ús màxim de les variables globals en el codi. Afortunadament, les característiques de l'estructura i el disseny d'aquest llenguatge de programació pot aconseguir aquest objectiu. Bona sort!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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