Nenhum produto encontrado nessa seleção.
Provavelmente você já deve ter visto e preenchido milhares de formulários por todos os sites que acessa enquanto está navegando na Internet. Sejam formulários de comentários, login, mensagens instantâneas, contato, e demais. De fato, eu poderia ficar mencionando milhares de tipos de formulários que você encontra pela Internet, porém, o ponto no qual quero chegar é a programação.
Em formulários HTML, normalmente utilizamos dois métodos (method): post ou get. Ambos podem ser acessados pelo PHP pelas suas variáveis globais, $_POST e $_GET.
Em específico para este artigo, vamos falar sobre a variável superglobal $_POST, que é, na verdade, um array associativo de todos os campos do formulário HTML.
O Formulário HTML
Não podemos falar sobre $_POST em PHP, sem mencionar que é necessário criar um formulário HTML com o método post. Este formulário pode ter quantos campos forem necessários para que você consiga atingir seu objetivo.
Veja um exemplo:
<form method="post" action="envia.php"> <p>Nome: <input type="text" name="nome"></p> <p><input type="submit" value="Enviar"></p> </form>
É muito importante prestarmos atenção em alguns detalhes do nosso formulário para sabermos o que fazer em nosso arquivo PHP, são eles:
- O atributo method, que deve indicar "post";
- O atributo action, que indica o arquivo para o qual os dados serão enviados. Se deixado em branco, o formulário é enviado para o mesmo arquivo em que está;
- O atributo name dos inputs do formulário, que indicam a chave do array para $_POST. Por exemplo, se o valor do atributo for nome, teremos um $_POST['nome'] em nosso PHP.
Você pode ter quantos inputs ou textareas quiser em seu formulário.
Vamos ver como capturar os dados quando o formulário for enviado.
Recebendo o $_POST
Agora que criamos nosso formulário em PHP, é hora de criarmos o arquivo que vai receber os dados. Para nosso exemplo, o action indica para um arquivo chamado "envia.php", que ainda não existe.
Então vamos criar este arquivo.
Depois da criação, precisaremos verificar se o $_POST foi enviado pelo formulário. Podemos fazer isso da seguinte maneira:
<?php // Verifica se algo foi postado if ( ! empty( $_POST ) ) { // O resto do nosso código virá aqui echo 'Aqui vem o resto do código'; } else { // Se nada for postado, aparece a mensagem echo 'Nada foi postado.'; } ?>
Acima estamos utilizando estruturas condicionais para verificar se algo foi postado pelo formulário. A função "empty" verifica se a variável está vazia e retorna um valor verdadeiro ou falso (true ou false), porém, quando junta com o operador de negação "!", faz exatamente o contrário, verifica se a variável NÃO está vazia ( ! empty ). Por este motivo, o restante do nosso código só será executado se a variável $_POST não estiver vazia.
A maneira mais simples de obter os dados de $_POST, é simplesmente utilizando a chave que foi enviada pelo atributo name do input. Por exemplo:
<?php // Verifica se algo foi postado if ( ! empty( $_POST ) ) { // <input type="text" name="nome"> echo $_POST['nome']; } ?>
O exemplo acima exibe na tela do navegador qualquer coisa que for digitada no input com o atributo name igual a nome.
<input type="text" name="nome">
Se eu quiser milhares de inputs no meu formulário, por exemplo:
<form method="post" action="envia.php"> <p>Nome: <input type="text" name="nome"></p> <p>Email: <input type="email" name="email"></p> <p>Telefone: <input type="text" name="telefone"></p> <p>Endereço: <input type="text" name="endereco"></p> <p><input type="submit" value="Enviar"></p> </form>
Eu posso exibir os dados da seguinte maneira:
<?php // Verifica se algo foi postado if ( ! empty( $_POST ) ) { // <input type="text" name="nome"> echo 'Nome: ' . $_POST['nome'] . '<br>'; // <input type="email" name="email"> echo 'Email: ' . $_POST['email'] . '<br>'; // <input type="text" name="telefone"> echo 'Telefone: ' . $_POST['telefone'] . '<br>'; // <input type="text" name="endereco"> echo 'Endereço: ' . $_POST['endereco'] . '<br>'; } ?>
Se você achar mais simples, também pode definir variáveis para os dados postados, veja outro exemplo:
<?php // Verifica se algo foi postado if ( ! empty( $_POST ) ) { // Variáveis $nome = $_POST['nome']; $email = $_POST['email']; $telefone = $_POST['telefone']; $endereco = $_POST['endereco']; // <input type="text" name="nome"> echo 'Nome: ' . $nome . '<br>'; // <input type="email" name="email"> echo 'Email: ' . $email . '<br>'; // <input type="text" name="telefone"> echo 'Telefone: ' . $telefone . '<br>'; // <input type="text" name="endereco"> echo 'Endereço: ' . $endereco . '<br>'; } ?>
Ou se preferir ir ainda mais longe, algo mais avançado, poderíamos utilizar variáveis variáveis para gerar as variáveis dinamicamente.
<?php // Verifica se algo foi postado if ( ! empty( $_POST ) ) { // Variáveis geradas dinamicamente foreach ( $_POST as $variavel => $valor ) { $$variavel = $valor; } // <input type="text" name="nome"> echo 'Nome: ' . $nome . '<br>'; // <input type="email" name="email"> echo 'Email: ' . $email . '<br>'; // <input type="text" name="telefone"> echo 'Telefone: ' . $telefone . '<br>'; // <input type="text" name="endereco"> echo 'Endereço: ' . $endereco . '<br>'; } ?>
Como $_POST nos retorna um array, podemos utilizar o laço foreach para percorrer tal array e gerar variáveis dinâmicas ($$) pela chave do $_POST e seu respectivo valor.
foreach ( $_POST as $variavel => $valor ) { $$variavel = $valor; }
Neste caso, todas as variáveis que geramos manualmente no trecho de código anterior, são geradas automaticamente. Pode ser um ótimo recurso quando temos um formulário com milhares de campos, já que não precisaremos criar as variáveis manualmente. Outro ponto interessante desse método, é que podemos validar as variáveis enviadas de maneira mais simples (iremos discutir validação de formulário em artigos posteriores).
Criando arrays dentro do $_POST
Em alguns casos, pode ocorrer a necessidade de que você tenha arrays dentro dos seus inputs, ou seja, inputs de mesmo nome, porém vários valores. Veja um exemplo:
O HTML
<form method="post" action="envia.php"> <p>Endereço: <input type="text" name="endereco[]"></p> <p><input type="text" name="endereco[]"></p> <p><input type="text" name="endereco[]"></p> <p><input type="text" name="endereco[]"></p> <p><input type="submit" value="Enviar"></p> </form>
O PHP
<?php // Verifica se algo foi postado if ( ! empty( $_POST ) ) { // Joga os dados do $_POST['endereco'] // em uma variável $endereco = $_POST['endereco']; // Mostra uma mensagem na tela echo 'Seu endereço é: '; // Percorre o array gerado por endereco[] foreach ( $endereco as $junta_endereco ) { echo $junta_endereco . ' '; } } ?>
Para gerar arrays dentro do seu formulário, basta adicionar o nome do input (atributo name) que deseja seguido de colchetes []. Os índices são gerados automaticamente, você só vai precisar utilizar um laço de repetição para percorrer este array.
Vídeo Tutorial sobre $_POST e $_GET
Abaixo você vai assistir a um vídeo tutorial que criei baseado nos dois artigos, sobre $_GET e $_POST.
Concluindo
$_POST é uma parte muito importante de se entender em PHP, porém, é necessário que você entenda outras partes da linguagem para manipular os dados que são recebidos por essa variável. Não se preocupe, estamos explicando tudo que podemos sobre PHP, portanto, não deixe de acessar nosso curso de PHP gratuito.
Se tiver dúvidas é só perguntar aí nos comentários.