113 lines
4.1 KiB
Markdown
113 lines
4.1 KiB
Markdown
|
---
|
|||
|
title: PHP 5 Form Handling
|
|||
|
localeTitle: Manipulação de Formulários PHP 5
|
|||
|
---
|
|||
|
Os superglobais PHP $ _GET e $_ POST são usados para coletar dados de formulário.
|
|||
|
|
|||
|
### PHP - Um formulário HTML simples
|
|||
|
|
|||
|
O exemplo abaixo exibe um formulário HTML simples com dois campos de entrada e um botão de envio:
|
|||
|
|
|||
|
#### Exemplo
|
|||
|
|
|||
|
```php
|
|||
|
<html>
|
|||
|
<body>
|
|||
|
|
|||
|
<form action="welcome.php" method="post">
|
|||
|
Name: <input type="text" name="name"><br>
|
|||
|
E-mail: <input type="text" name="email"><br>
|
|||
|
<input type="submit">
|
|||
|
</form>
|
|||
|
|
|||
|
</body>
|
|||
|
</html>
|
|||
|
```
|
|||
|
|
|||
|
Quando o usuário preenche o formulário acima e clica no botão de envio, os dados do formulário são enviados para processamento em um arquivo PHP chamado "welcome.php". Os dados do formulário são enviados com o método HTTP POST.
|
|||
|
|
|||
|
Para exibir os dados enviados, você poderia simplesmente fazer eco de todas as variáveis. O "welcome.php" é assim:
|
|||
|
|
|||
|
```php
|
|||
|
<html>
|
|||
|
<body>
|
|||
|
|
|||
|
Welcome <?php echo $_POST["name"]; ?><br>
|
|||
|
Your email address is: <?php echo $_POST["email"]; ?>
|
|||
|
|
|||
|
</body>
|
|||
|
</html>
|
|||
|
```
|
|||
|
|
|||
|
A saída poderia ser algo assim:
|
|||
|
```
|
|||
|
Welcome John
|
|||
|
Your email address is john.doe@example.com
|
|||
|
```
|
|||
|
|
|||
|
O mesmo resultado também pode ser obtido usando o método HTTP GET:
|
|||
|
|
|||
|
#### Exemplo
|
|||
|
|
|||
|
```php
|
|||
|
<html>
|
|||
|
<body>
|
|||
|
|
|||
|
<form action="welcome_get.php" method="get">
|
|||
|
Name: <input type="text" name="name"><br>
|
|||
|
E-mail: <input type="text" name="email"><br>
|
|||
|
<input type="submit">
|
|||
|
</form>
|
|||
|
|
|||
|
</body>
|
|||
|
</html>
|
|||
|
```
|
|||
|
|
|||
|
e "welcome\_get.php" é assim:
|
|||
|
|
|||
|
```php
|
|||
|
<html>
|
|||
|
<body>
|
|||
|
|
|||
|
Welcome <?php echo $_GET["name"]; ?><br>
|
|||
|
Your email address is: <?php echo $_GET["email"]; ?>
|
|||
|
|
|||
|
</body>
|
|||
|
</html>
|
|||
|
```
|
|||
|
|
|||
|
O código acima é bem simples. No entanto, o mais importante está faltando. Você precisa validar os dados do formulário para proteger seu script contra códigos maliciosos.
|
|||
|
|
|||
|
> **Pense em SEGURANÇA ao processar formulários PHP!**
|
|||
|
>
|
|||
|
> Esta página não contém nenhuma validação de formulário, apenas mostra como você pode enviar e recuperar dados de formulário.
|
|||
|
>
|
|||
|
> No entanto, as próximas páginas mostrarão como processar formulários PHP com a segurança em mente! A validação adequada dos dados do formulário é importante para proteger seu formulário contra hackers e spammers!
|
|||
|
|
|||
|
### GET vs. POST
|
|||
|
|
|||
|
Tanto o GET quanto o POST criam uma matriz (por exemplo, matriz (chave => valor, chave2 => valor2, chave3 => valor3,…)). Essa matriz contém pares de chave / valor, em que as chaves são os nomes dos controles de formulário e os valores são os dados de entrada do usuário.
|
|||
|
|
|||
|
Tanto o GET quanto o POST são tratados como $ _GET e $_ POST. São superglobais, o que significa que estão sempre acessíveis, independentemente do escopo - e você pode acessá-los de qualquer função, classe ou arquivo sem precisar fazer nada especial.
|
|||
|
|
|||
|
$ \_GET é uma matriz de variáveis passadas para o script atual por meio dos parâmetros de URL.
|
|||
|
|
|||
|
$ \_POST é uma matriz de variáveis passadas para o script atual através do método HTTP POST.
|
|||
|
|
|||
|
### Quando usar o GET?
|
|||
|
|
|||
|
As informações enviadas de um formulário com o método GET ficam visíveis para todos (todos os nomes e valores de variáveis são exibidos no URL). O GET também tem limites na quantidade de informação a ser enviada. A limitação é de cerca de 2000 caracteres. No entanto, como as variáveis são exibidas na URL, é possível marcar a página como favorito. Isso pode ser útil em alguns casos.
|
|||
|
|
|||
|
GET pode ser usado para enviar dados não confidenciais.
|
|||
|
|
|||
|
**Nota:** GET nunca deve ser usado para enviar senhas ou outras informações confidenciais!
|
|||
|
|
|||
|
### Quando usar o POST?
|
|||
|
|
|||
|
As informações enviadas de um formulário com o método POST são **invisíveis para os outros** (todos os nomes / valores são incorporados ao corpo da solicitação HTTP) e **não** têm **limites** quanto à quantidade de informações a serem enviadas.
|
|||
|
|
|||
|
Além disso, o POST suporta funcionalidades avançadas, como suporte para entrada binária multi-parte, ao carregar arquivos para o servidor.
|
|||
|
|
|||
|
No entanto, como as variáveis não são exibidas na URL, não é possível marcar a página como favorito.
|
|||
|
|
|||
|
> **Os desenvolvedores preferem o POST para enviar dados de formulário.**
|