Artigos & Ideias

Tratamento de QueryStrings

Escrito por:

Tal qual como foi falei aqui em Dicas para melhorar os URLs das Páginas, os URL’s das páginas têm bem mais importância, do que a maioria das pessoas pensam. Ninguém quer “enfrentar maratonas” de URLs e muito menos com QueryStrings. Mas se calhar algumas pessoas não sabem o que são QueryStrings ou como fazê-las.

Uma QueryString, num modo bem simples de entender, é toda a informação passada pela URL pelo método GET, ou seja, tudo o que vem depois do “?” na URL.

Vamos tomar o exemplo, em que o nosso link é www.meusite.pt/?pag=teste.

Iríamos obter a informação passada assim.

< ?PHP
$pag = $_REQUEST['pag']; // A variável $pag será uma string com o conteúdo a testar
?>

Também podemos obter a informação por $_GET.
Exemplo:

< ?PHP
$pag = $_GET['pag'];  //A variável $pag será uma string com o conteúdo a testar
// teste.
?>

Até aqui tudo muito simples.
Agora, como podemos tratar das URL’s ?
É simples, e existem vários métodos.
Por if(o mais simples), por switch(mediano) e por arrays (o que eu prefiro).

Vamos começar pelo if.

Query String com IF, e ELSEIF:

< ?PHP
$seccao = $_REQUEST['seccao'];
if($link == "php")
{
       $pagina = "php.php";
}
elseif($seccao == "asp")
{
	$pagina = "asp.php";
}
if( (isset($pagina)) and (file_exists($pagina)) )
{
	echo '';
	include($pagina);
}
else
{
	echo "Página não encontrada, insere o link correcto.";
}
?>

Este é o método mais simples, e fácil para quem está a iniciar.

Agora, digamos que queres ter mais do que uma querystring.
Por exemplo com o link: pagina.php?seccao=php&categoria=scripts.
Iríamos obter as variáveis da mesma forma que o exemplo acima, onde o & serve para adicionar mais um campo.

Por exemplo, se tivermos a seguinte querystring: pagina.php?seccao=php&categoria=scripts&subcategoria=chats&id=11102
Para obtermos dados múltiplos no if, basta fazermos múltiplas verificações.
Continuando o exemplo acima:

< ?PHP
$seccao = $_REQUEST['seccao'];
$categoria = $_REQUEST['categoria'];
if($seccao == "php")
{
	$pagina = "php.php";
}
elseif($seccao == "asp")
{
	$pagina = "asp.php";
}
elseif($seccao == "php" AND $categoria == "scripts")
{
	$pagina = "php/scripts.php";
}
if( (isset($pagina)) and (file_exists($pagina)) )
{
	echo '';
	include($pagina);
}
else
{
	echo "Página não encontrada, insere o link correcto.";
}
?>

Agora com o switch.

< ?php
$sessao = $_GET["sessao"];
switch($sessao)
{
	case "html":
   		include("html.php");
   		break;
 	case "php":
		include("php.php");
   		break;
 	default:
   		echo "Não encontrada.";
   		break;
}
?>

Com Arrays

< ?PHP
$seccao = $_REQUEST['link'];
// Atenção na ,(virgula) que separa os arrays. Quando terminar-mos não vamos utilizar mais a virgula só iremos colocar o );
$seccao = array('php' => array('php.php'), 'asp' => array('asp.php'), 'js' => array('js.php'));
if(isset($link) AND file_exists($seccao[$seccao][0]))
{
	include ($seccao[$seccao][0]);
}
else
{
	echo "Página não encontrada, por favor insira o link correto.";
}
?>

Se tiverem dúvidas é só comentarem!

3


Sobre o Autor

Carlos Gonçalves é um Freelancer com bastante experiência em linguagens de programação e webdesign. Vocacionado para as novas tecnologias, aposta na qualidade dos serviços, atendimento rápido e sempre disponível para melhor satisfazer os seus clientes. Autor do site cgoncalves.com

Comentários

  1. João Pedro Pereira  8 Fevereiro 2009

    Quando li o título tratamento de query string estava à espera de ler algo sobre como adicionar parâmetros, retirar parâmetros, limpar todos os parâmetros, etc.
    Algo do género:

    function remover($url, $key){
    $url = preg_replace(‘/(.*)(\?|&)’ . $key . ‘=[^&]+?(&)(.*)/i’, ‘$1$2$4′, $url . ‘&’);
    $url = substr($url, 0, -1);

    return ($url);
    }

    (responder)
  2. Carlos Gonçalves  8 Fevereiro 2009

    João Pedro Pereira, irei incluir essas sugestões num futuro artigo

    (responder)
  3. Burunuu  27 Junho 2009

    tenho uma duvida.. desculpa se é algo idiota ou não tem sentido mas.. ai vai

    é possível abrir um link externo com isso? se sim.. pode me explicar?

    por exemplo:

    // array(‘php’ => array(‘http://www.uol.com.br’)

    só que abrir em uma nova janela.. o.0

    (responder)

Comentar

Nota: A moderação de comentários está activada e pode atrasar o teu comentário. Não há necessidade de reenviares o teu comentário.

More in Opiniões, Ideias e Dicas, PHP (73 of 79 articles)

# #