Dica sobre a variável global $_SERVER do PHP

Varivável global $_SERVER
  • 17 de Dez de 2012
  • 6635 Visualizações
  • Seja o primeiro a comentar

Em vários casos precisamos saber, via programação, algumas informações do servidor onde a aplicação web está alocada. Através da variável global $_SERVER do php é possível recuperar uma gama de informações bastantes úteis para o  aprimoramento do seu sistema.

Variável global?

Sim! Variável global ou superglobal é uma variável que está disponível em todos os escopos do script. Sempre que necessário você pode chamar sem precisar declará-la. Em resumo, são variáveis determinadas pelo PHP que podem ser usadas durante todo seu código e em qualquer lugar. Geralmente elas são escritas com letras maiúsculas.

A variável $_SERVER é um array composta por vários índices. Se você acha chato memorizar todos esses índices, eu concordo, e é por isso que dou esta dica para que você não se perca e fique tentando lembrar qual índice recupera o arquivo em execução ou qual recupera o endereço root da aplicação, por exemplo.

Como já disse, a variável $_SERVER é um array, então, nada melhor fazer um teste imprimindo todo o seu conteúdo para iniciarmos o estudo. Essa prática é uma maneira rápida para descobrir qual índice você deseja usar. Eu utilizei a tag <pre> do html para formatação pré-definida de texto, assim consigo ver a listagem do array perfeitamente.

<?php
    echo "<pre>";
    print_r($_SERVER);
    echo "</pre>";
?>

O resultado será mais ou menos assim...

Array
(
    [HTTP_HOST] => localhost
    [HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 6.2; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0
    [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    [HTTP_ACCEPT_LANGUAGE] => pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3
    [HTTP_ACCEPT_ENCODING] => gzip, deflate
    [HTTP_CONNECTION] => keep-alive
    [HTTP_COOKIE] => __utma=111872281.253710642.1355172831.1355754865.1355762444.11; __utmz=111872281.1355172831.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)
    [HTTP_CACHE_CONTROL] => max-age=0
    [PATH] => C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Windows Live\Shared;C:\Program Files (x86)\Panda Security\Panda Global Protection 2013;
    [SystemRoot] => C:\Windows
    [COMSPEC] => C:\Windows\system32\cmd.exe
    [PATHEXT] => .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
    [WINDIR] => C:\Windows
    [SERVER_SIGNATURE] => 
    [SERVER_SOFTWARE] => Apache/2.4.2 (Win64) PHP/5.4.3
    [SERVER_NAME] => localhost
    [SERVER_ADDR] => ::1
    [SERVER_PORT] => 80
    [REMOTE_ADDR] => ::1
    [DOCUMENT_ROOT] => D:/Aplicativos/wamp/www/
    [REQUEST_SCHEME] => http
    [CONTEXT_PREFIX] => 
    [CONTEXT_DOCUMENT_ROOT] => D:/Aplicativos/wamp/www/
    [SERVER_ADMIN] => [email protected]
    [SCRIPT_FILENAME] => D:/Aplicativos/wamp/www/server.php
    [REMOTE_PORT] => 53865
    [GATEWAY_INTERFACE] => CGI/1.1
    [SERVER_PROTOCOL] => HTTP/1.1
    [REQUEST_METHOD] => GET
    [QUERY_STRING] => 
    [REQUEST_URI] => /server.php
    [SCRIPT_NAME] => /server.php
    [PHP_SELF] => /server.php
    [REQUEST_TIME_FLOAT] => 1355769755.098
    [REQUEST_TIME] => 1355769755
)

Agora vou explicar como se comporta os índices que mais utilizo.

Atenção: algumas explicações foram retiradas do próprio manual do PHP disponível em http://php.net/manual/pt_BR/reserved.variables.server.php.

[HTTP_HOST]
O conteúdo do header Host: da requisição atual, se houver

[HTTP_USER_AGENT]
Informa o browser que o usuários está acessando a aplicação

[SERVER_NAME]
O nome host do servidor onde o script atual é executado. Se o script está rodando em um host virtual, este será o valor definido para aquele host virtual.

[SERVER_PORT]
A porta do servidor web para comunicação.

[REMOTE_ADDR]
O endereço IP de onde o usuário está visualizado a página atual.

[DOCUMENT_ROOT]
O diretório raiz onde o script atual é executado. Essa configuração é definida nos arquivos de configuração do servidor.

[SCRIPT_FILENAME]
O caminho absoluto o script atualmente em execução.

[REQUEST_URI]
O URI fornecido para acessar a página atual.

[SCRIPT_NAME]
Caminho completo do script atual.

[PHP_SELF]
Nome do arquivo do script que está executando.

Na dúvida, sempre imprima o array $_SERVER e verifique qual índice deseja usar. Assim você ganha tempo e não precisa ficar memorizando tantas variáveis.

Espero ter ajudado de alguma forma. Abraços e até a próxima.

TAGS: php, variável global, $_SERVER, tiagomatosweb

Deixe um comentário