Na sua aplicação PHP pode acontecer de você precisar saber a URL atual ( a URL na barra de endereço do navegador).
No PHP existem algumas variáveis globais que permitem obter a URL atual através de um processo bem simples. Você pode obter todas informações sobre a URL atual por partes, usando o array $_SERVER. Você pode pegar oprotocolo (http,https), hostname (www.domínio.com), scriptname (diretório/nome do arquivo) e parâmetrospassados na URL.
Após essa pequena introdução, vamos ver como isso funciona.
Primeiramente vamos fazer nossos testes/estudos em cima de uma estrutura complexa de URL como esta abaixo:
Vamos pegar essa URL e dividir em pedaços:
http – Este é o protocolo
www.dominio.com – Este é hostname
teste – Este é o diretório
meuscript.php – Este é o nome do arquivo que contém o script PHP
estado – Este é o primeiro parâmetro e seu valor é ‘SC’
cidade – Este é o segundo parâmetro e seu valor é ‘Florianopolis’
Agora vamos tentar construir a mesma URL, mas com PHP.
Pegando o Protocolo – http
O protocolo da URL pode ser lido através da variável $_server[‘SERVER_PROTOCOL’].
1 2 3 4 5 | <?php echo $_SERVER [ 'SERVER_PROTOCOL' ]; ?> |
No entanto se você for verificar, verá que não obterá simplesmente http ou https, mas sim uma sequência como esta:HTTP/1.1.
Então iremos precisar de alguma forma manipular a string para obter o protocolo limpo, ou seja, http ou https apenas:
1 2 3 4 5 6 7 | <?php $protocolo = ( strpos ( strtolower ( $_SERVER [ 'SERVER_PROTOCOL' ]), 'https' ) === false) ? 'http' : 'https' ; echo $protocolo ; ?> |
Pegando o Hostname – www.dominio.com
Como próximo passo nós iremos descobrir o hostname. Faremos isto com a variável $_SERVER[‘HTTP_HOST’] da seguinte e simples forma:
1 2 3 4 5 6 7 | <?php $host = $_SERVER [ 'HTTP_HOST' ]; echo $host ; ?> |
Pegando o scriptname (diretório/nome do arquivo) – teste/meuscript.php
A variável $_SERVER[‘SCRIPT_NAME’] contém o caminho completo com o nome do atual diretório e arquivo PHP:
1 2 3 4 5 6 7 | <?php $script = $_SERVER [ 'SCRIPT_NAME' ]; echo $script ; ?> |
Pegando os parâmetros da URL – estado=SC&cidade=Florianopolis
A última parte da URL pegaremos com a variável $_SERVER[‘QUERY_STRING’] e podemos fazer de forma similar ao que já estamos fazendo com as outras partes:
1 2 3 4 5 6 7 | <?php $parametros = $_SERVER [ 'QUERY_STRING' ]; echo $parametros ; ?> |
Pegando a atual URI (Uniform Resource Identifier) – /teste/meuscript.php?estado=SC&cidade=Florianopolis
Se o protocolo e o hostname não são importantes para você e você apenas quer o scriptname (caminho para o script PHP) e os parâmetros, então você pode simplesmente utilizar a variável $_SERVER[‘REQUEST_URI’] da seguinte forma:
1 2 3 4 5 6 7 | <?php $uri = $_SERVER [ 'REQUEST_URI' ]; echo $uri ; ?> |
De acordo com tudo que vimos, para pegar a atual URL da página podemos fazer algo como:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?php $protocolo = ( strpos ( strtolower ( $_SERVER [ 'SERVER_PROTOCOL' ]), 'https' ) === false) ? 'http' : 'https' ; $host = $_SERVER [ 'HTTP_HOST' ]; $script = $_SERVER [ 'SCRIPT_NAME' ]; $parametros = $_SERVER [ 'QUERY_STRING' ]; $UrlAtual = $protocolo . '://' . $host . $script . '?' . $parametros ; echo $UrlAtual ; ?> |
Nota: Quase todos os servidores modernos que suportam PHP utilizam as variáveis $_SERVER, mas você precisa saber que: “As entradas neste array são criadas pelo servidor web e não há garantia que cada servidor web proverá todas as entradas deste array”.
Veja no manual mais informações sobre a variável $_SERVER
Bons estudos!