PHP e Formulários HTML Enviando informações para um programa

Propaganda
Disciplina: Tópicos Especiais em TI – PHP
Este material foi produzido com base nos livros e documentos citados abaixo, que
possuem direitos autorais sobre o conteúdo. Favor adquiri-los para dar continuidade ao
curso.
Livro: Desenvolvendo Websites com PHP
Apostila da Divisão de Serviços à Comunidade – Centro de Computação – Unicamp
PHP e Formulários HTML
A criação de formulários é realizada através da linguagem HTML. Para tornar o
formulário útil, deve-se informar ao browser para onde devem ser enviadas as
informações. Isso é feito com a opção action, utilizada na tag form do HTML. Exemplo:
<form action=”trata_dados.php”>
<p> Digite seu email: <input type=”text” name=”email” size=”20”></p>
<p> <input type=”submit” value=”Enviar” name=”enviar” ></p>
</form>
Agora quando clicar no botão “Enviar”, o conteúdo do campo email será enviado ao
programa trata_dados.php, e esse programa tratará a informação recebida.
Enviando informações para um programa PHP
A passagem de dados ao programa PHP é realizada através de métodos de passagem de
parâmetros. Existem dois métodos: GET e POST. No caso de um formulário, o tipo de
método a ser utilizado é especificado na opção method da tag form. Exemplo:
<form action=”trata_dados.php” method=”POST”>
Método GET
Este método é o padrão para envio de dados, o que significa que se nenhum método for
especificado na criação de um formulário, estaremos utilizando o método GET para o
envio dos dados.
Nesse método, os dados serão enviados juntamente com o nome da página (na URL)
que processará os dados recebidos. Exemplo:
<form action=”trata_dados.php”>
<p> Digite seu nome: <input type=”text” name=”nome” size=”30”></p>
<p> Digite sua idade: <input type=”text” name=”idade” size=”3”></p>
<p> <input type=”submit” value=”Enviar” name=”enviar” ></p>
</form>
Como este formulário não mostra a opção method na tag form, o padrão
(method=”GET”) será adotado. Suponha que os campos do formulário tenham sido
preenchidos com os seguintes dados: Marcos, 30. Ao clicarmos no botão “Enviar”, o
endereço ativado será:
1
http://www.seusite.com.br/trata_dados.php?nome=Marcos&idade=30
Os campos do formulário serão passados como parâmetro após o endereço de destino. O
caractere ? representa o início de uma cadeia de variáveis, e o símbolo & identifica o
início de uma nova variável.
Desvantagens de utilização do método GET:
- Limite de caracteres que podem ser enviados (em torno de 2000 caracteres);
- Usuário enxerga todos os parâmetros por meio da barra de endereço do browser.
Vantagem de utilização do método GET:
- Pode também ser utilizado para passagem de parâmetros por meio de links.
Método POST
Para utilizar este método deve-se utilizar a opção method na tag form para informar ao
browser. Exemplo:
<form action=”trata_dados.php” method=”POST”>
<p> Digite seu nome: <input type=”text” name=”nome” size=”30”></p>
<p> Digite sua idade: <input type=”text” name=”idade” size=”3”></p>
<p> <input type=”submit” value=”Enviar” name=”enviar” ></p>
</form>
O método POST envia os dados do formulário por meio do corpo da mensagem
encaminha ao servidor. Assim, o usuário não verá em sua barra de endereços aquele
endereço enorme contendo uma cadeia de caracteres. Ele verá apenas o endereço do
programa ativado. Este método também não possui limitação de tamanho dos dados que
serão enviados, sendo ideal para formulários que possuem muitas informações a serem
enviadas. Pode-se também enviar imagens e outros arquivos (utilizando o valor file na
opção type da tag input do HTML) o que não é feito com o método GET.
Tratando as informações recebidas
Existem duas maneiras de acessar os dados fornecidos pelo formulário:
1) Trata-los como se fossem variáveis colocando o símbolo $ seguido do próprio
nome do campo definido no formulário. Por exemplo, o campo nome do
formulário do exemplo anterior seria acessado dentro do programa PHP pela
variável $nome. Porém, esse método só funciona se a opção register_globals
estiver habilitada no arquivo de configuração php.ini, que por padrão fica
desabilitada.
2) Utilizar os arrays superglobais predefinidos pelo PHP. Existem dois arrays que o
PHP utiliza: um para armazenar os valores enviados pelo método GET e outro
para armazenar informações enviadas pelo método POST. Esses arrays são o
$_GET e o $_POST.
2
De acordo com o exemplo anterior, para acessar os campos do formulário teríamos o
seguinte:
$_POST[“nome”]
$_POST[“email”]
Funções especiais para formatação de dados
Existem funções que tratam códigos HTML recebidos e coloca caracteres especiais em
seu lugar. Assim, caso o usuário digite um código HTML como valor de algum campo,
você poderá tratar este código como um valor do tipo texto. Essa função possui a
seguinte sintaxe:
Htmlspecialchars(<string>);
As mudanças feitas são as seguintes:
& é substituído por &
“ é substituído por "
< é substituído por <
> é substituído por >
Exemplo:
<?php
$texto = “<img src=http://www.siteporno.com.br/foto1.jpg>”;
$novo_texto = htmlspecialchars($text);
echo $texto . “<br>”;
echo $novo_texto;
?>
A execução deste programa mostra duas linhas na tela: a primeira linha mostrará a
imagem foto1.jpg, que é “puxada” de outro servidor. A segunda linha mostra o valor da
string em formato texto.
Existe também a função stripslashes() que trata a recepção de dados que contém
caracteres especiais.
Exemplo: Caso o usuário digite a seguinte informação – João da Silva, vulgo “João da
Maloca”, o valor recebido pelo programa PHP será: João da Silva, vulgo \”João da
Maloca\”.
A função stripslashes(<string>) transforma a string em seu formato original.
Quando utiliza-se o método GET, as funções urldecode e urlencode podem ser
utilizadas para o tratamento dos dados recebidos. Por exemplo, passando o nome
“Joaquim da Silva” pelo método GET, teremos a seguinte URL:
http://www.seusite.com.br/trata_dados.php?nome=Joaquim%20da%20Silva
O programa de recepção de dados deveria ter a seguinte linha:
$nome = urldecode($nome);
3
Assim, os dados hexadecimais serão substituídos pelos caracteres que eles representam.
A função urlencode possui o funcionamento contrário.
4
Download