InformáticaSoftware

PHP variable global na función. Fai unha variable global en PHP

Para crear un sitio web completo, que posúe ampla funcionalidade que precisa saber moito. Pero o que pode facelo verdadeiramente única - é PHP. A variable global en linguaxe de programación non é usada moi a miúdo, pero ás veces para saber como funciona, ás veces é necesario. Iso é o estudo do que é e como funciona, imos facer neste artigo.

ámbito

Entón chame o contexto en que a variable e determinada. Na maioría dos casos, eles teñen só un ámbito. Cando o PHP variables globais cargados dende outros arquivos, entón pode ser incluído (incluír) e necesario (esixir).

Por defecto, son limitados ao ámbito función local. E como facer arquivos vistos variables nas súas fronteiras, o que podería máis e usar? Para este fin, e se inclúe nas variables globais de PHP.

O contrasinal "global"

E aquí é como declarar unha variable global para PHP? Na consecución deste obxectivo vai axudarnos a palabra "global". Cómpre poñer diante da variable que quere facer un global (narimer, global «The Variable").

Tras a posta en marcha desta indicación, os datos poderá traballar con calquera arquivo. Se nalgún lugar hai referencias a esta variable, o programa sempre prestar atención na versión global.

Por que unha lingua tan estraña? O feito de que, á vez, pode haber versións locais. Pero elas estarán dispoñibles exclusivamente para estes ficheiros onde anunciadas. E para todo o demais vai actuar variables globais clase PHP. Polo tanto, ten que ser coidadoso. E que non había dúbida, aquí está un exemplo de como se parecen: a global.

Porque se un arquivo terá acceso a unha serie de variables, el leva-los a entrar en conflito. Pero non podemos dicir con certeza - local ou global variable é ler ou completamente falla. Entón, se está a rexistrar unha función, non debe ser problema. Pero o uso dunha variable para as súas fronteiras a ser problemático. Polo tanto, a estrutura da elaboración do código necesario para seguir de preto e asegúrese de que en ningún lugar hai incluso unha condición previa para o devandito conflito xurdiu.

Outra forma de realización da gravación

É posible en PHP para crear unha variable global doutro xeito? Si, nin un sequera. En primeiro lugar, imos considerar o $ globals. Esta é unha matriz asociativa. A clave para iso - é o nome. Como o valor do contido actúa como unha variable global. Nótese que a matriz despois do anuncio existe en calquera ámbito. Isto dá razón para crer que superglobal. Parece tan: $ globals [ 'variable'].

Predefinidos / superglobals

En cada linguaxe de programación, hai algúns nomes que son fretados para algunhas das súas funcións. Polo tanto, para crear en PHP variables globais co mesmo nome non vai funcionar.

Esta linguaxe de programación ten as súas propias características. Entón, é importante que as variables predefinidas aquí non está instalando "super", é dicir, non están dispoñibles en todos os lugares. Como podo solucionar isto? Para variables predefinidas estaba dispoñible nalgún lugar, debe ser declarado do seguinte xeito:. «Variable global" Parece ser o mesmo de antes dixen, non? Certo, pero non completamente. Vexamos xa "loitando" un exemplo:

  • Global $ HTTP_POST_VARS;
  • echo $ HTTP_POST_VARS [ 'name'].

Sente a diferenza entre eles? Nótese que en variables globais en PHP non ten necesariamente que ser usado dentro da función. Pode incluso ser instalado nun ficheiro que está incluído nela.

Ligazóns e seguridade

Como verás, en PHP crear unha variable global non é un problema. Pero existe ningún ligazóns relativos en particular? Si, pode haber un comportamento inesperado cando empregando global. Pero antes diso, un pouco de historia de fondo.

Na versión 4.2.0 do Real decreto polos register_globals estándar cambiou de en Estado para fóra. Para a maioría dos usuarios, que non é moi importante, pero en balde. Ao final, iso afecta directamente a seguridade do produto desenvolvido. Se precisa facer a variable global, PHP-directiva sobre este parámetro non é afectada directamente. Con todo, o uso incorrecto xa pode crear seguridade precedentes.

Entón, se register_globals está conectado, antes da execución do código escrito inicializar as distintas variables que son necesarios, por exemplo, para enviar formularios HTML. Por iso, decidiu-se desactiva-lo.

Por que o Estado esta directiva no variable global PHP debe moito? O feito é que cando o Estado dos desenvolvedores non sempre seguro podería-se responder á pregunta de onde veu. Por unha banda, é máis fácil de escribir código. Pero, por outra - é un risco de seguranza. Polo tanto, para evitar erros, así como datos de mixagem e directiva foi desactivado.

Agora imos ollar non / código de seguridade, así como a forma de detectar casos en que o anuncio da variable PHP global está acompañado intentos de adulteración de datos. Isto é necesario, a fin de crear non só bonito, pero tamén de forma constante sitios que non rachar a primeira persoa de traballo dispoñible.

código malicioso

Imos definir esa variable é certo para os que fosen autorizados:

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

if ($ autorizar) {
inclúen "/highly/sensitive/data.php";
}

Neste estado, a variable pode ser definido automaticamente. Tendo en conta que os datos poden simplemente ser substituídos, ea fonte da súa orixe non está definido, entón calquera pode pasar por un tal exame e finxir ser outra persoa. Se o desexa, o dianteiro (ou só curioso, pero inexperto persoa) pode ser prexudicada, a nosa lóxica.

Modificar o valor da Directiva, este código pode funcionar correctamente, como sexa necesario. Pero arranque de variables non é só un bo ton na programación, pero tamén nos dá unha certa garantía de estabilidade do guión.

versión confianza do código

pode desactivar ou traballar directivas, ou prescribir un código máis complexo para alcanzar este obxectivo. Por exemplo, así:

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

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

} Else {

echo "Hola Invitado
";
echo "user Benvido!";

}

Unha substitución, neste caso, non será difícil. Pero aínda así - é posible. Para iso, ten que tomar coidado para que as ferramentas de resposta rápida foron facilitados. Se quere incluír variables globais en PHP, pode utilizar as seguintes ferramentas: se sabemos o que o intervalo é o valor obtido, é posible rexistrar un script para comprobalo cun xogo. Por suposto, tampouco garante protección completa contra valores de substitución. Pero iso é máis opcións complicar significativamente.

Atopados intentos para enmascarar

Imos ver como entende escrito anteriormente. En PHP variables globais na función que serán dadas a continuación, terá que declarar-se. Podemos dicir que este é un tipo de lección de casa sobre a asimilación do tema da lección. Aquí está o código:

if (isset ($ _ [ 'C_COOKIE']) Cookie) {
} Elseif (isset ($ _ GET [ 'C_COOKIE']) || isset ($ _ post [ 'C_COOKIE'])) {

Correo-e ( "administrarot@example.com", "Atención, o guión foi gravado intento de roubo e adulteración de datos", $ _SERVER [ 'REMOTE_ADDR']);
echo "Houbo unha seguridade dobres ou tentar facelo notificado o administrador.";
saída;

} Else {
}
>

Agora explicación aos mesmos. En parte C_COOKIE nos vén dunha fonte fiable. Para totalmente satisfeito segundo o resultado esperado, imos comprobar o seu valor e notificar o administrador en caso de problemas. Se non vén, entón ningunha acción e non precisa facer. Ten que entender que simplemente desactivar register_globals directiva non fai o seu código está seguro. Polo tanto, calquera variable que recibe un script de usuario, debe ser revisado para a esperanza.

conclusión

Aquí, en xeral, e todo o que precisa saber sobre as variables globais correctamente e con seguridade usalos no seu traballo. Claro que, para dicir que non hai unha garantía total de que ninguén vai usalos non pode - dianteiros están constantemente mellorando os seus métodos e habilidades. Por iso, é desexable limitar o uso máximo de variables globais no código. Afortunadamente, as características de estrutura e deseño desta linguaxe de programación pode alcanzar este obxectivo. Boa sorte!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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