605 Shares 7777 views

PHP variável global na função. Faça uma variável global em PHP

Para criar um site completo, que possui ampla funcionalidade que você precisa saber muito. Mas o que pode torná-lo verdadeiramente única – é PHP. A variável global na linguagem de programação não é usada muito frequentemente, mas às vezes para saber como ele funciona, às vezes é necessário. Isso é o estudo do que é e como funciona, vamos fazer neste artigo.

escopo

Então chame o contexto em que a variável e determinada. Na maioria dos casos, eles têm apenas um escopo. Quando o PHP variáveis globais carregados a partir de outros arquivos, então ele pode ser incluído (incluir) e necessário (exigir).

Por padrão, eles são limitados ao âmbito função local. E como fazer arquivos vistos variáveis em suas fronteiras, o que poderia mais e usar? Para este fim, e é fornecido nas variáveis globais do PHP.

A palavra-chave "global"

E aqui é como declarar uma variável global para PHP? Na consecução deste objectivo vai ajudar-nos a palavra "global". É necessário colocar na frente da variável que você quer fazer um global (narimer, global «The Variable").

Após a implementação dessa indicação, os dados será capaz de trabalhar com qualquer arquivo. Se em algum lugar há referências a essa variável, o programa irá sempre prestar atenção na versão global.

Por que uma língua tão estranha? O fato de que, ao mesmo tempo, pode haver versões locais. Mas elas estarão disponíveis exclusivamente para esses arquivos onde anunciadas. E para todo o resto vai agir variáveis globais classe PHP. Portanto, você deve ser cuidadoso. E que não havia dúvida, aqui está um exemplo de como eles se parecem: a global.

Porque se um arquivo terá acesso a uma série de variáveis, ele irá levá-los a entrar em conflito. Mas não podemos dizer com certeza – local ou global variável é ler ou completamente falhar. Então, se é para registrar em uma função, ele não deve ser problema. Mas o uso de uma variável para suas fronteiras a ser problemático. Portanto, a estrutura da elaboração do código necessário para acompanhar de perto e certifique-se de que em nenhum lugar há até mesmo um pré-requisito para o referido conflito surgiu.

Outra forma de realização da gravação

É possível em PHP para criar uma variável global de outra maneira? Sim, nem um sequer. Primeiro, vamos considerar o $ GLOBALS. Esta é uma matriz associativa. A chave para isso – é o nome. Como o valor do conteúdo age como uma variável global. Note-se que a matriz após o anúncio existe em qualquer escopo. Isso dá razão para acreditar que superglobal. Parece tão: $ GLOBALS [ 'variável'].

Predefinidos / superglobals

Em cada linguagem de programação, existem alguns nomes que são fretados para algumas de suas funções. Portanto, para criar em PHP variáveis globais com o mesmo nome não vai funcionar.

Esta linguagem de programação tem suas próprias características. Então, é importante que as variáveis pré-definidas aqui não está instalando "super", ou seja, eles não estão disponíveis em todos os locais. Como posso corrigir isso? Para variáveis predefinidas estava disponível em algum local, deve ser declarado da seguinte forma :. «variável global" Parece ser o mesmo de antes disse, certo? É verdade, mas não completamente. Vejamos já "lutando" um exemplo:

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

Você sente a diferença entre eles? Note-se que em variáveis globais do PHP não tem necessariamente de ser usado dentro da função. Ele pode até mesmo ser colocado em um arquivo que está incluído nela.

Links e segurança

Como você pode ver, em PHP criar uma variável global não é um problema. Mas existe nenhum links relativos em particular? Sim, pode haver um comportamento inesperado quando usando global. Mas antes disso, um pouco de história de fundo.

Na versão 4.2.0 da directiva pelos register_globals padrão mudou de on-estado para fora. Para a maioria dos usuários, isso não é muito importante, mas em vão. Afinal, isso afeta diretamente a segurança do produto desenvolvido. Se você precisa fazer a variável global, PHP-directiva sobre este parâmetro não é afetada diretamente. No entanto, o uso incorreto já pode criar segurança precedentes.

Então, se register_globals está ligado, antes da execução do código escrito inicializado as diferentes variáveis que são necessários, por exemplo, para enviar formulários HTML. Por isso, decidiu-se desligá-lo.

Porque é que o estado desta directiva em variável global php deve muito? O fato é que quando o estado dos desenvolvedores nem sempre com certeza poderia-se responder à pergunta de onde ele veio. Por um lado, é mais fácil de escrever código. Mas, por outro – é um risco de segurança. Portanto, para evitar erros, bem como dados de mixagem e directiva foi desativado.

Agora vamos olhar não / código de segurança, bem como a forma de detectar casos em que o anúncio da variável PHP global está acompanhado por tentativas de adulteração de dados. Isto é necessário, a fim de criar não só bonito, mas também de forma constante sites que não rachar a primeira pessoa de trabalho disponível.

código malicioso

Vamos definir essa variável é verdadeiro para aqueles que tenham sido autorizados:

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

if ($ autorizar) {
incluem "/highly/sensitive/data.php";
}

Neste estado, a variável pode ser definido automaticamente. Considerando que os dados podem simplesmente ser substituídos, e a fonte de sua origem não está definido, então qualquer um pode passar por um tal teste e fingir ser outra pessoa. Se desejar, o atacante (ou apenas curioso, mas inexperiente pessoa) pode ser prejudicada, nossa lógica.

Se alterar o valor da directiva, este código irá funcionar correctamente, como necessário. Mas inicialização de variáveis não é apenas um bom tom na programação, mas também nos dá uma certa garantia da estabilidade do script.

versão confiável do código

você pode desligar ou trabalhar directivas, ou prescrever um código mais complexo para alcançar este objetivo. Por exemplo, assim:

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

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

} Else {

echo "Olá Convidado
";
echo "user Bem-vindo!";

}

Uma substituição, neste caso, não será difícil. Mas ainda assim – possível. Para fazer isso, você deve tomar cuidado para que as ferramentas de resposta rápida foram fornecidos. Se você quiser incluir variáveis globais em PHP, você pode usar as seguintes ferramentas: se nós sabemos o que o intervalo é o valor obtido, é possível registrar um script para verificar isso com um jogo. Claro, ele também não garante proteção completa contra valores de substituição. Mas isso é demais opções complicar significativamente.

Encontrados tentativas para se mascarar

Vamos ver como você entende escrito anteriormente. Em PHP variáveis globais na função que serão dadas abaixo, você terá que declarar-se. Podemos dizer que este é um tipo de lição de casa sobre a assimilação do tema da lição. Aqui está o código:

<? Php
if (isset ($ _ [ 'C_COOKIE']) Cookie) {
} Elseif (isset ($ _ GET [ 'C_COOKIE']) || isset ($ _ POST [ 'C_COOKIE'])) {

e-mail ( "[email protected]", "Atenção, o script foi gravado tentativa de roubo e adulteração de dados", $ _SERVER [ 'REMOTE_ADDR']);
echo "Houve uma segurança quebrado ou tentar fazê-lo notificado o administrador.";
saída;

} Else {
}
?>

Agora explicação aos mesmos. Em parte C_COOKIE nos vem de uma fonte confiável. Para totalmente satisfeito de acordo com o resultado esperado, vamos verificar o seu valor e notificar o administrador em caso de problemas. Se ele não vem, então nenhuma ação e não precisa fazer. Você tem que entender que simplesmente desabilitar register_globals directiva não faz o seu código está seguro. Portanto, qualquer variável que recebe um script do usuário, deve ser verificado para o valor esperado.

conclusão

Aqui, em geral, e tudo o que você precisa saber sobre as variáveis globais com sucesso e com segurança usá-los em seu trabalho. Claro que, para dizer que não há uma garantia total de que ninguém vai usá-los não pode – atacantes estão constantemente melhorando seus métodos e habilidades. Por isso, é desejável limitar o uso máximo de variáveis globais no código. Felizmente, as características de estrutura e design desta linguagem de programação pode alcançar este objetivo. Boa sorte!