terça-feira, abril 10, 2007

Enviando dados via GET e POST no PHP

Quando desenvolvemos um site dinâmico, geralmente temos a necessidade de passar alguns valores de uma página para a outra, para podermos, então, realizar operações como consultas e inserções no banco, autenticação de usuários, etc. No PHP os dois métodos mais utilizado para isso são o GET e POST. Vamos falar um pouco mais sobre eles agora.
GET
É o método mais simples e mais limitado para se usar. Neste caso os valores e seus respectivos identificadores são transmitidos pela URL, não sendo preciso a abertura de uma nova conexão (explicaremos melhor isso quando falarmos do método POST). Quem nunca viu uma URL desse tipo:
Esse exemplo demonstra na prática o uso da passagem de parâmetros via GET. A presença da interrogação indica o fim do endereço e o início da declaração dos nossos valores que serão passados. Neste caso, a página versecao.php receberá uma variável chamada id com o valor 32, e outra variável descricao com valor “Minha_Secao”.
Pronto! Você provavelmente deverá estar pensando: “Ótimo . Vou passar todos os meus valores via GET, pela URL. ”
Porém, como nem tudo é perfeito, o método GET não faz tudo para nós.
Como os valores são passados pela URL, há um limite para o número de bytes que serão enviados. Você poderá enviar no máximo 1024 caracteres, o que limita bastante suas possibilidades com esse método.
Outra questão, agora referente à segurança, é sobre os tipos de dados que você poderá enviar via URL. Como nesse método os dados são visíveis ao usuário, não é bom (na verdade é péssimo) que se passe informação confidenciais via GET. Imagine você, navegando em um site, e de repente você vê a sua senha passando pela URL. E o pior, sendo salva no histórico do computador.
O ideal é que se use o método get somente para passar parâmetros para pesquisas e outras informações não críticas.
Para solucionar esses e outros problemas temos disponível o método POST.
POST
O método POST representa uma alternativa ao método GET para as questões de capacidade e segurança. Nesse método uma conexão paralela é aberta e os dados são passados por ela. Não há restrição referente ao tamanho e os dados não são visíveis ao usuário. Há única condição é que se use um formulário para os dados. Na tag form , temos um atributo action. Nesse atributo é que setaremos a página que receberá nossas informações. Quando o botão submit for acionado todos os dados desse formulário serão passados para a página definida no action. É uma maneira segura e com mais capacidade em termos de espaço.
Legal. Aprendemos como enviar as informações através dos dois métodos para as páginas, mas ainda não sabemos como acessá-los nessas página.
O PHP armazena as variáveis vindas por GET e por POST em vetores associativos (vetores cujos índices são strings).
Vejamos como faríamos isso com o exemplo do método GET acima.
Foram passadas duas variáveis : id e descricao.
Para pegar o id fazemos, por exemplo:
$meu id = $_GET[“id”] e $minhadescricao = $_GET[“descricao”]
No caso do método POST, temos um vetor chamado $_POST que armazenará os dados vindos do formulário. Vale lembrar que, nesse caso, os índices do vetor serão as nomes dados aos inputs no seu formulário.
Para acessar os valores vindos de um formulário com nome e idade, por exemplo, fazemos>
$nome = $_POST[“nome”] e $idade = $_POST[“idade”].

Agora você já está pronto para começar a praticar a transmissão de variáveis no PHP. Qualquer dúvida é só comentar.

Ainda precisando de uma mãozinha? Tente esses outros posts:

Validação dinâmica de formulários usando Ajax e PHP

Tutorial upload de arquivos com jQuery e PHP

9 comentários:

Marcel disse...

Ola.

Eu sou iniciante em PHP (iniciante mesmo) e estou aprendendo tudo sozinho.

Eu entendi os fundamentos básicos da linguagem, mas eu não consigo fazer um formulário que funcione!

Eu tenho 2 dúvidas principais:

Eu mando o arquivo .php para o servidor e "chamo" ele no Html?

Esse arquivo depende da algum arquivo .cgi para funcionar?

Se puder me ajudar fico grato!
Meu email é marcelrizzo@hotmail.om

Paulinho disse...

Okay, mas como aplica-la? vc nos deu a diferença... por exemplo, eu quero chamar uma página tipo, categoria=vendas tipo=casa, quero q ela abra a pagina de vendas que contenha as casas como faze-lo?? não entendi como vou chamar se uma é a vendas.php e a outra casa.php como eu faço isso vc pode explicar! fico grato!

Bruno disse...

Olá Paulo,

Você pode criar uma página para conter as vendas de todos os produtos. Para ver apenas as vendas de casas, você pode chamar via GET a página vendas.php?tipo=casa.

Você pode colocar esse endereço em um link por exemplo.

Aí lá na página vendas.php você tem que tratar quais os produtos serão mostrados. Nesse caso apenas as casas. Então você pega o parâmetro "tipo", como foi demonstrado no artigo: $tipo = $_GET['tipo']. Assim você poderá fazer uma busca no banco procurando apenas pelos produtos cujo tipo é casa.

Espero ter ajudado!

Anônimo disse...

Não se esqueça de que quem ainda usa o php4.xx.xx deve usar o $HTTP_POST_VARS[''] ou $HTTP_get_VARS[''], e não $_POST[''] OU $_GET[''] como foi citado.

Abraços..
leo.

Vinícius disse...

ola,

como eu faço a intercalação do banco de dados com a minha pagina?

tipo, o get ou post vai buscar esses valores de onde?

como sera a pagina que vai receber esses valores e cuspir os resultados que eu quero?

Guilherme disse...

Cara muito legal seus tutos...São realmente para iniciantes muito bem explicados muitos tutoriais explicam a mesma coisa com 2 linhas...O seu é muito mais explicado muito bom vlw ae por favor poste mais tutos de php eu adoro php.

Igor disse...

Foi de grande valia; parabéns pela iniciativa!

Lucas Silva S. disse...

Aqui funcionou perfeitamente, realmente ficou muito bom, obrigado.
usei um parecido em meu site:
http://www.phaco.com.br/painel

Débora disse...

Gostei muito do seu post..simples,mas bem explicativo. Parabéns!