International PHP Conference Munich 2025

Tratando Formulários

Uma das características mais fortes do PHP é a forma como ele trata formulários HTML. O conceito básico que é importante entender é que qualquer elemento de formulário irá automaticamente ficar disponível para seus scripts PHP. Por favor leia a seção Variáveis externas do PHP para mais informações e exemplos de como usar formulários com PHP. Aqui vai um exemplo de formulário HTML:

Exemplo #1 Um simples formulário HTML

<form action="action.php" method="post">
    <label for="nome">Seu nome:</label>
    <input name="nome" id="nome" type="text">

    <label for="idade">Sua idade:</label>
    <input name="idade" id="idade" type="number">

    <button type="submit">Enviar</button>
</form>

Não há nada de especial neste formulário. É um formulário HTML comum sem nenhuma etiqueta especial de qualquer tipo. Quando o usuário preencher este formulário e clicar no botão "Enviar", a página action.php é chamada. Neste arquivo nós teremos algo como isto:

Exemplo #2 Imprimindo dados de nosso formulário

Olá, <?php echo htmlspecialchars($_POST['nome']); ?>.
Você tem <?php echo (int) $_POST['idade']; ?> anos de idade.

Um exemplo de saída deste script seria:

Olá, Maria. Você tem 22 anos de idade.

Para além de htmlspecialchars() e (int), deve ser óbvio o que o script faz. htmlspecialchars() transforma caracteres que sejam especiais no HTML na sua forma codificada, de forma que não seja possível injetar etiquetas HTML ou JavaScript em sua página. O campo "idade", por ser um número, pode ser simplesmente convertido para um int que automaticamente eliminará qualquer caractere estranho. Você também pode fazer o PHP automaticamente fazer isso utilizando a extensão filter. As variáveis $_POST['nome'] e $_POST['idade'] são criadas automaticamente pelo PHP. Anteriormente utilizamos a superglobal $_SERVER; acima mostramos que a superglobal $_POST contém todos os dados POST. Perceba como o método (method) do formulário é POST. Se fosse utilizado o método GET, os dados do formulário acabariam na superglobal $_GET. Você também pode utilizar a superglobal $_REQUEST, se não se importar com a origem do dado enviado. Ela conterá os dados mesclados das origens GET, POST e COOKIE.

adicione uma nota

Notas Enviadas por Usuários (em inglês) 1 note

up
114
sethg at ropine dot com
21 years ago
According to the HTTP specification, you should use the POST method when you're using the form to change the state of something on the server end. For example, if a page has a form to allow users to add their own comments, like this page here, the form should use POST. If you click "Reload" or "Refresh" on a page that you reached through a POST, it's almost always an error -- you shouldn't be posting the same comment twice -- which is why these pages aren't bookmarked or cached.

You should use the GET method when your form is, well, getting something off the server and not actually changing anything. For example, the form for a search engine should use GET, since searching a Web site should not be changing anything that the client might care about, and bookmarking or caching the results of a search-engine query is just as useful as bookmarking or caching a static HTML page.
To Top