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 &amp; “ é substituído por &quot; < é substituído por &lt; > é substituído por &gt; 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