O que é querystring?
Querystring nada mais é o padrão que o protocolo HTTP utiliza para transporte de informação do cliente para o servidor, ou até mesmo cliente - cliente em alguns casos (JavaScript ou VBScript), o querystring muitas vezes é intepretado de forma errada pelos programadores que tendem a entender como sendo um recurso da linguagem, mas este recurso já existia muito antes do PHP e era utilizado pelos programadores Perl, CGI e ASP.
O querystring obedece o seguinte padrão:
nome_da_variavel=conteudo da variavel
O nome da variável indica a query (sim, por isso chama querystring) que deveremos utilizar para resgatar o seu conteúdo, tanto no client side como no server side, este nome da variável pode variar de acordo com a linguagem que esta utilizando, no PHP obedecemos os mesmos padrões utilizados na declaração de variáveis, por tanto não podemos:
- Começar o nome da nossa variável com números (1var)
- Não podemos utilizar caracteres especiais nos nomes das variáveis (!#$% e outros)
- Se estiver em CamelCase, melhor ainda!
- Não pode haver espaço no nome da variável (nome da variavel)
Estas regras são básicas e são apenas para o PHP, outras linguagens provavelmente tem regras parecidas, mas sugiro que pesquise antes de começar a desenvolver seu sistema em ruby, python ou qualquer outra.
Tendo estas regras em vista temos que ver que também podemos passar mais de uma variável via querystring que deverá utilizar a seguinte sintax para isso:
nome_da_variavel=conteudo da variavel&var2=ohhh conteudo bão
Observe que utilizamos o & indicar que o conteúdo de uma variável acabou e esta iniciando outro e claro, quando utilizamos o padrão $_GET a W3C indica que utilizemos o seguinte padrão:
nome_da_variavel=conteudo da variavel&var2=ohhh conteudo bão
Sim, isto mesmo, utilizaremos & para separar as variávels o código "HTML" que representa o &.
Então só podemos utilizar querystring no método GET?
Não, todas as requisições POST que você faz também envia os dados via querystring, embora o PHP torne isso transparente para você, é ideal que saiba que eles seguem o mesmo padrão no envio.
Então querystring nada mais é que uma variável que podemos enviar através do cliente para o servidor, certo?
Certo, e com esta pergunta introduzimos o próximo tópico, vamos entender como podemos utilizar isso para organizar a estrutura do nosso site.
Estrutura padrão de site
Vamos supor que seu site tenha um padrão que possamos dividir da seguinte maneira:
* cabeçalho (estático)
* Menu Esquerdo (estático)
* Conteúdo (variável)
* Rodapé (estático)
Este padrão atende a maioria dos sites, acrescentando ou diminuindo alguma das áreas da estrutura, agora vamos pensar.
Eu tenho um site que a única parte que muda é o conteúdo, deveria eu sair criando várias páginas copiando o bloco estático?
NÃO. Por 2 simples motivos, já cansei de dar manutenção nestes sites amadores com blocos estáticos repetidos em vários arquivos, faça direito e talvez assim nem me contratem para arrumar o que você fez e outro motivo é se você mesmo irá dar manutenção, poupe-se do trabalho.
Então já temos o porque vamos trabalhar agora o como e descreveremos uma das milhares maneiras de fazer isso com PHP, sendo que esta maneira é a mais arcaica e burlável de todas e já ajudou "hackers" a acharem furos homéricos em sites como Banco do Brasil e Correios, portanto não pense que por ser simples possa ser feito de qualquer maneira, preste atenção e siga as dicas.
1o passo
O primeiro passo nós já fizemos, que é entender como nosso site funciona e dividir ele em áreas estáticas e variáveis. feito? vá para o segundo passo!
2o passo
Crie arquivos separados para o conteúdo dinâmico separe-os de forma que a manutenção de um não interfira em outro arquivo, assim você não perderá tempo abrindo vários arquivos, sugiro a organização ali de cima mesmo, portanto teremos:
index.php (arquivo principal, ou como você poderá achar na internet ele é chamado de bootstrap)
cabecalho.php (arquivo com o topo do HTML)
menu.php (arquivo separado para o menu)
rodape.php (arquivo com o rodapé do site)
3o passo
Aqui vamos construir a nossa armadilha (bootstrap) que deverá ser o index.php:
//Aqui criaremos a variável $pagina ela sera a controladora,
//definindo para aonde o script deve ir.
$pagina = isset($_GET['p']) ? $_GET['p'] : "index";
//agora deveremos verificar se a página que esta sendo chamada
//realmente existe em nosso site, recomendo esta lista por segurança
//evitando o que chamamos de include injection
switch(strtolower($pagina)) {
case 'contato.php':
$arquivo = "contato.php";
break;
default:
$arquivo = "index.php";
break;
}
//Pode parecer idiota criar este mapa manualmente, mas é
//fortemente recomendado que assim se faça evitando futuros
//problemas com sites utilizando seu include para apresentar
//um conteúdo falso pois dependendo da configuração do PHP
//o include/require pode acessar páginas esternas, o que é horrível
//aqui iremos incluir as páginas na ordem:
require_once("cabecalho.php");
require_once("menu.php");
require_once($arquivo);
require_once("rodape.php");
Último passo
Agora temos a nossa armadilha pronta e segura, podemos criar nosso link`s internos, para isso deveremos apontar todos os links do site para index.php passando um parâmetro, lembrando que antes de iniciarmos nossa querystring devemos utilizar uma ? (interrogação) para indicar que ali inicia nossa querystring, ficando da seguinte forma nosso link:
<a href="index.php?p=contato">contato</a>
Concluindo assim nosso processo de entender e utilizar o querystring, sendo que existem muitas outras utilidades, que talvez venha a listar futuramente aqui no fórum.
Espero que todos gostem do pequeno post e recomendo que leiam um pouco mais sobre o assunto, deixo aqui o site do meu professor com alguns assuntos relacionados:
* Função http_build_query do PHP
* Difenreça entre include, include_once, require e require_once
* Como verificar se uma variável existe? (isset)
* Operador ternário no PHP
Os links acima explica alguns detalhes do script utilizado acima e outros acrescentam ao conteúdo já passado como por exemplo a introdução a função http_build_query que nos permite, de forma fácil criar nossas querystring`s a partir de um array.





















