Desde o PHP 4.1.0, o método preferencial para obter
variáveis externas é
através das superglobais mencionadas acima. Antes disso, as pessoas utilizavam
register_globals
ou os arrays pré-definidos do PHP ($HTTP_*_VARS
).
A partir do PHP 5.0.0, os grandes
arrays de variáveis pré-definidos
podem ser desativados através da diretiva
register_long_arrays
.
$_SERVER
Nota: Introduzida na versão 4.1.0. Em versões anteriores, use
$HTTP_SERVER_VARS
.
$_SERVER
é um array contendo informações
como headers, caminhos e localizações do script. Os itens deste
array são criados pelo servidor web. Não há garantias que
todos os servidores web geram todas elas: alguns servidores talvez omitam algumas ou
geram outras que não estão listadas aqui. Mesmo assim, um grande número
dessas variáveis estão de acordo com a especificação CGI 1.1, então você pode
esperar encontrá-las nesse array.
Esta é uma variável 'superglobal', ou automaticamente global. Isto
significa que ela é disponível em todos os escopos (níveis) de um
script. Você não precisa fazer um global
$_SERVER; para pode acessá-la dentro de funções ou métodos, como
era necessário com $HTTP_SERVER_VARS
.
$HTTP_SERVER_VARS
contém a mesmas
informações, mas ela não é uma superglobal.(Note que
$HTTP_SERVER_VARS
e $_SERVER
são variáveis diferentes como também o PHP as manipula diferentemente)
Se a diretiva register_globals
está ativa, então essas variáveis tornam-se disponíveis no
escopo global do script (por exemplo, separados dos arrays
$_SERVER
e $HTTP_SERVER_VARS
.
Para maiores informações, veja o capítulo de segurança entitulado
Utilizando registradores
globais. Estas variáveis globais individuais não são superglobais.
Você poderá ou não encontrar qualquer um dos seguintes elementos dentro de $_SERVER. Note que poucos (ou nenhum) deles estão disponíveis (ou não terão qualquer sentido) se você estiver rodando o PHP na linha de comando.
PHP_SELF
'
O nome do arquivo do script atualmente em uso, relativo ao
document root. Por exemplo,
$_SERVER['PHP_SELF']
em um script com o
endereço http://example.com/test.php/foo.bar
pode ser /test.php/foo.bar.
A constante __FILE__
contém o caminho completo e nome do arquivo (mesmo incluído)
atual.
Se estiver rodando o PHP em linha de comando, esta variável não está disponível.
argv
'Array de argumentos passado para o script. Quando o script é executado na linha de comando, isto permite um acesso aos parâmetros de linha de comando no estilo do C. Quando chamado via método GET, ele conterá a query string.
argc
'Contém o número de parâmetros da linha de comando passados para o script (se executando da linha de comando).
GATEWAY_INTERFACE
'O número de revisão da especificação CGI que o servidor está utilizando, por exemplo : 'CGI/1.1'.
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_SOFTWARE
'A string de identificação do servidor, fornecida nos headers quando respondendo a requests.
SERVER_PROTOCOL
'Nome e número de revisão do protocolo de informação pelo qual a página foi requerida, por exemplo 'HTTP/1.0';
REQUEST_METHOD
'Contém o método de request utilizando para acessar a página. Geralmente 'GET', 'HEAD', 'POST' ou 'PUT'.
QUERY_STRING
'A query string (string de solicitação), se houver, pela qual a página foi acessada.
DOCUMENT_ROOT
'O diretório raiz sob onde o script atual é executado, como definido no arquivos de configuração do servidor.
HTTP_ACCEPT
'O conteúdo do header Accept: da requisição atual, se houver.
HTTP_ACCEPT_CHARSET
'O conteúdo do header Accept-Charset: da requisição atual, se houver. Exemplo: 'iso-8859-1,*,utf-8'.
HTTP_ACCEPT_ENCODING
'O conteúdo do header Accept-Encoding: da requisição atual, se houver. Exemplo: 'gzip'.
HTTP_ACCEPT_LANGUAGE
'O conteúdo do header Accept-Language: da requisição atual, se houver. Exemplo 'en'.
HTTP_CONNECTION
'O conteúdo do header Connection: da requisição atual, se houver. Exemplo: 'Keep-Alive'.
HTTP_HOST
'O conteúdo do header Host: da requisição atual, se houver.
HTTP_REFERER
'
O endereço da página (se houver) através da qual o agente do
usuário acessou a página atual. Essa diretiva é informada pelo agente do usuário. Nem
todos os browsers geram esse header, e alguns ainda possuem a habilidade
de modificar o conteúdo do HTTP_REFERER
como recurso. Em
poucas palavras, não é confiável.
HTTP_USER_AGENT
'O conteúdo do header User-Agent: da requisição atual, se houver. É uma string denotando o agente de usuário pelo qual a página é acessada. Um exemplo típico é: Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586). Além de outras coisas, você pode utilizar este valor com get_browser() para personalizar a geração de suas páginas para as capacidades do agente do usuário.
REMOTE_ADDR
'O endereço IP de onde o usuário está visualizado a página atual.
REMOTE_HOST
'
O nome do host que o usuário utilizou para chamar a página
atual. O DNS reverso (lookup) do
REMOTE_ADDR
do usuário.
Nota: Seu servidor web precisa estar configurado para criar essa variável. Por exemplo, no Apache você precisa colocar um HostnameLookups On dentro do httpd.conf. Veja também gethostbyaddr().
REMOTE_PORT
'A porta TCP na máquina do usuário utilizada para comunicação com o servidor web.
SCRIPT_FILENAME
'O caminho absoluto o script atualmente em execução.
Nota: Se o script for executado pela CLI com um caminho relativo, como file.php ou ../file.php,
$_SERVER['SCRIPT_FILENAME']
irá conter o caminho relativo especificado pelo usuário.
SERVER_ADMIN
'O valor fornecido pela diretiva SERVER_ADMIN (do Apache) no arquivo de configuração do servidor. Se o script está sendo executado em um host virtual, este será os valores definidos para aquele host virtual.
SERVER_PORT
'A porta na máquina servidora utilizada pelo servidor web para comunicação. Como default, este valor é '80'. Utilizando SSL, entretanto, mudará esse valor para a porta de comunicação segura HTTP.
SERVER_SIGNATURE
'String contendo a versão do servidor e nome do host virtual que é adicionado às páginas geradas no servidor, se ativo.
PATH_TRANSLATED
'O caminho real do script relativo ao sistema de arquivos (não o document root), depois realizou todos os mapeamentos de caminhos (virtual-to-real).
Nota: A partir do PHP 4.3.2,
PATH_TRANSLATED
não mais existe implicitamente sob a SAPI do Apache 2, ao contrário da mesma situação no Apache 1, onde ela tinha o mesmo valor da variável de servidorSCRIPT_FILENAME
, quando a mesma não era configurada pelo Apache. Essa mudança foi realizada para conformidade com a especificação CGI, ondePATH_TRANSLATED
deve existir somente sePATH_INFO
estiver definida.Apache 2 users may use AcceptPathInfo = On inside httpd.conf to define
PATH_INFO
.
SCRIPT_NAME
'Contém o caminho completo do script atual. Útil para páginas que precisam apontar para elas mesmas (dinamicamente). A constante __FILE__ contém o caminho completo e nome do arquivo (mesmo incluído) atual.
REQUEST_URI
'O URI fornecido para acessar a página atual, por exemplo, '/index.html'.
PHP_AUTH_USER
'Quando executando sob o Apache como módulo e fazendo autenticaçào HTTP, esta variável estará definida com o username fornecido pelo usuário.
PHP_AUTH_PW
'Quando executando sob o Apache como módulo e fazendo autenticaçào HTTP, esta variável estará definida com a senha fornecida pelo usuário.
AUTH_TYPE
'Quando executando sob o Apache como módulo e fazendo autenticaçào HTTP, esta variável estará definida com o tipo de autenticação utilizado.
$_ENV
Nota: Introduzida na versão 4.1.0. Em versões anteriores, utilize
$HTTP_ENV_VARS
.
Estas variáveis são importadas dentro no espaço global do PHP do ambiente sob qual o interpretador do PHP está rodando. Muitos são são criados no shell (terminal) sob o qual o PHP é executado e sistemas diferentes normalmente utilizam vários sabores de shells, e uma lista definitiva é impossível. Verifique a documentação de sua shell para a lista de variáveis ambiente definidas.
Outras variáveis ambiente incluem as variáveis CGI, informadas aqui independente do PHP estar rodando como um módulo do servidor ou como processador CGI.
Esta é uma variável 'superglobal', ou automaticamente global. Isto
significa que ela é disponível em todos os escopos (níveis) de um
script. Você não precisa fazer um global
$_ENV; para pode acessá-la dentro de funções ou métodos, como
era necessário com $HTTP_ENV_VARS
.
$HTTP_ENV_VARS
contém a mesma
informação, mas não é uma superglobal. (Note que
$HTTP_ENV_VARS
e $_ENV
são variáveis diferentes como também o PHP as manipula diferentemente)
Se a diretiva register_globals
está ativa, então essas variáveis tornam-se disponíveis no
escopo global do script (por exemplo, separados dos arrays
$_ENV
e $HTTP_ENV_VARS
.
Para maiores informações, veja o capítulo de segurança entitulado
Utilizando registradores
globais. Estas variáveis globais individuais não são superglobais.
$_COOKIE
Nota: Introduzida na versão 4.1.0. Em versões anteriores, utilize
$HTTP_COOKIE_VARS
.
Contém um array associativo de variáveis passas para o script atual através de cookies HTTP.
Esta é uma variável 'superglobal', ou automaticamente global. Isto
significa que ela é disponível em todos os escopos (níveis) de um
script. Você não precisa fazer um global
$_COOKIE; para pode acessá-la dentro de funções ou métodos, como
era necessário com $HTTP_COOKIE_VARS
.
$HTTP_COOKIE_VARS
contém as mesmas
informações, mas não é uma superglobal. (Note que
$HTTP_COOKIE_VARS
e $_COOKIE
são variáveis diferentes como também o PHP as manipula diferentemente)
Se a diretiva register_globals
está ativa, então essas variáveis tornam-se disponíveis no
escopo global do script (por exemplo, separados dos arrays
$_COOKIE
e $HTTP_COOKIE_VARS
.
Para maiores informações, veja o capítulo de segurança entitulado
Utilizando registradores
globais. Estas variáveis globais individuais não são superglobais.
$_GET
Nota: Introduzida na versão 4.1.0. Em versões anteriores, use
$HTTP_GET_VARS
.
Contém um array associativo de variáveis passadas para o script atual através do método HTTP GET.
Esta é uma variável 'superglobal', ou automaticamente global. Isto
significa que ela é disponível em todos os escopos (níveis) de um
script. Você não precisa fazer um global
$_GET; para pode acessá-la dentro de funções ou métodos, como
era necessário com $HTTP_GET_VARS
.
$HTTP_GET_VARS
contém as mesmas
informações, mas não é uma superglobal. (Note que
$HTTP_GET_VARS
e $_GET
são variáveis diferentes como também o PHP as manipula diferentemente)
Se a diretiva register_globals
está ativa, então essas variáveis tornam-se disponíveis no
escopo global do script (por exemplo, separados dos arrays
$_GET
e $HTTP_GET_VARS
.
Para maiores informações, veja o capítulo de segurança entitulado
Utilizando registradores
globais. Estas variáveis globais individuais não são superglobais.
$_POST
Nota: Introduzida na versão 4.1.0. Em versões anteriores, use
$HTTP_POST_VARS
.
Contém um array associativo de variáveis passadas para o script atual através do método HTTP POST.
Esta é uma variável 'superglobal', ou automaticamente global. Isto
siginifica que ela é disponível em todos os escopos (níveis) de um
script. Você não precisa fazer um global
$_POST; para pode acessá-la dentro de funções ou métodos, como
era necessário com $HTTP_POST_VARS
.
$HTTP_POST_VARS
contém as mesmas
informações, mas não é uma superglobal. (Note que
$HTTP_POST_VARS
e $_POST
são variáveis diferentes como também o PHP as manipula diferentemente)
Se a diretiva register_globals
está ativa, então essas variáveis tornam-se disponíveis no
escopo global do script (por exemplo, separados dos arrays
$_POST
e $HTTP_POST_VARS
.
Para maiores informações, veja o capítulo de segurança entitulado
Utilizando registradores
globais. Estas variáveis globais individuais não são superglobais.
$_FILES
Nota: Introduzida na versão 4.1.0. Em versões anteriores, use
$HTTP_POST_FILES
.
Contém um array associativo dos itens carregador no script atual através do método HTTP POST.
Esta é uma variável 'superglobal', ou automaticamente global. Isto
significa que ela é disponível em todos os escopos (níveis) de um
script. Você não precisa fazer um global
$_FILES; para pode acessá-la dentro de funções ou métodos, como
era necessário com $HTTP_FILES_VARS
.
$HTTP_POST_FILES
contém as mesmas
informações, mas não é uma superglobal. (Note que
$HTTP_POST_FILES
e $_FILES
são variáveis diferentes e portanto o PHP as manipula diferentemente)
Se a diretiva register_globals
está ativa, então essas variáveis tornam-se disponíveis no
escopo global do script (por exemplo, separados dos arrays
$_FILES
e $HTTP_POST_FILES
.
Para maiores informações, veja o capítulo de segurança entitulado
Utilizando registradores
globais. Estas variáveis globais individuais não são superglobais.
$_REQUEST
Nota: Introduzida na versão 4.1.0. Não há array equivalente em versões anteriores.
Nota: Até o PHP 4.3.0, as informações de
$_FILES
também estavam incluídas em$_REQUEST
.
Contém um array associativo com os conteúdos de
$_GET
, $_POST
e $_COOKIE
.
Esta é uma variável 'superglobal', ou automaticamente global. Isto significa que ela é disponível em todos os escopos (níveis) de um script. Você não precisa fazer um global $_REQUEST; para pode acessá-la dentro de funções ou métodos.
Se a diretiva register_globals
está ativa, então essas variáveis tornam-se disponíveis no
escopo global do script (por exemplo, separados dos arrays
$_REQUEST
. Para maiores informações, veja
o capítulo de segurança entitulado Utilizando registradores
globais. Estas variáveis globais individuais não são superglobais.
$_SESSION
Nota: Introduzida na versão 4.1.0. Em versões anteriores, use
$HTTP_SESSION_VARS
.
Contém um array associativo das variáveis de sessão disponíveis para o script atual. Veja a documentação das funções de Sessões para maiores informações de como utilizá-las.
Esta é uma variável 'superglobal', ou automaticamente global. Isto
siginifica que ela é disponível em todos os escopos (níveis) de um
script. Você não precisa fazer um global
$_SESSION; para pode acessá-la dentro de funções ou métodos, como
era necessário com $HTTP_SESSION_VARS
.
$HTTP_SESSION_VARS
contém as mesmas
informações, mas não é uma superglobal. (Note que
$HTTP_SESSION_VARS
e $_SESSION
são variáveis diferentes e portanto o PHP as manipula diferentemente)
Se a diretiva register_globals
está ativa, então essas variáveis tornam-se disponíveis no
escopo global do script (por exemplo, separados dos arrays
$_SESSION
e $HTTP_SESSION_VARS
Para maiores informações, veja o capítulo de segurança entitulado
Utilizando registradores
globais. Estas variáveis globais individuais não são superglobais.
$GLOBALS
Nota:
$GLOBALS
foi disponibilizada desde a versão 3.0.0.
Um array associativo contendo referências para todas as variáveis atualmente definidas no escopo global do script. Os nomes das variáveis são as chaves do array.
Esta é uma variável 'superglobal', ou automaticamente global. Isto significa que ela é disponível em todos os escopos (níveis) de um script. Você não precisa fazer um global $GLOBALS; para pode acessá-la dentro de funções ou métodos.
$php_errormsg
$php_errormsg
é uma variável contendo o
texto da última mensagem de erro gerada pelo PHP. Esta variável
somente está disponível no escopo em que o erro
ocorreu, e somente se a opção de configuração track_errors
está ativa (seu default é off).