Logo SatellaSoft



Obtendo valores dos formulários com PHP

Neste artigo é apresentado de forma correta como recuperar valores de formulários HTML.


Ícone homem Gunnar Correa
Ícone data de publicação 26/02/2016
Ícone quantidade de visualização 2,899
Ícone bandeira do Brasil Português

De certa forma todas as aplicações WEB possuem algum tipo de formulário, seja ele requisitado por AJAX ou feito uma simples submissão. O fato é que existem várias formas de se recuperar valores dos formulários e envia-los para um banco de dados.

O PHP conta com a função $_POST[], que está presente desde a versão 4.1.0 que retorna um Array Associativo, esta função utilizada por  muitos desenvolvedores, então se você imaginou que não vamos utiliza-la, acertou! Embora seja a função mais utilizada para recuperar dados, os próprios desenvolvedores do PHP informaram que ela possibilita a passagem de valores maliciosos que comprometem a integridade de nossa aplicação.

Código 01:

<?php
	$nome = $_POST["txtNome"]; //Recupera o valor e atribui a variável
	echo $nome;
?>

Existem outras diretivas que também utilizam o $_, que é o $_SESSION, $_GET, $_COOKIE entre outros.

Vamos utilizar a função filter_input(), ela assume três valores como parâmetro , que são:
1° - Tipo de requisição, GET, POST ou outros (INPUT_POST, INPUT_GET);
2° - Qual campos do formulário que desejamos filtrar.
3 ° - Qual será o filtro, onde podemos definir se vai retornar um inteiro, float, string entre outros.

Código 02:

<?php
	$nome = filter_input(INPUT_POST, "txtNome", FILTER_SANITIZE_STRING); //Recupera o valor e atribui a variável
	echo $nome;
?>

Para este artigo, vamos utilizar o formulário apresentado logo abaixo, note que o mesmo possui dois campos de texto e um botão de Submit.

Código 03:

<!doctype html>
<html lang="pt-br">
	<head>
		<title>Obtendo valores</title>
		<meta charset="UTF-8" />
		<style>
			
			ul{
				list-style: none;
			}
			
			.text{
				font-weight: bold;
				font-family: Segoe UI;
			}
			
			.breakLine{
				margin-bottom:6px;
			}
		</style>
	</head>
	<body>
		<form method="post">
			<ul>
				<li class="text">Nome</li>
				<li class="breakLine"><input type="text" name="txtNome" placeholder="Juanice" /></li>
				
				<li class="text">E-mail</li>
				<li class="breakLine"><input type="text" name="txtEmail" placeholder="juanice_89@msn.com" /></li>
				
				<li class="text"></li>
				<li><input type="submit" name="btnSubmit" value="Cadastrar" /></li>				
			</ul>
		</form>
	</body>
</html>

A função filter_input retorna o valor no formato especificado, mas caso o campo não exista ou não seja possível acessa-lo, é retornado um valor nulo (null).

Devemos verificar se o botão foi clicado, e só posteriormente recuperar os valores advindos do formulário, então note o exemplo abaixo, onde fazemos um teste para verificar se o botão foi clicado.

Código 04:

<?php
	$btn = filter_input(INPUT_POST, "btnSubmit", FILTER_SANITIZE_STRING);
	
	if($btn){
		echo "Clicou";	
	}
?>

Para recuperemos os valores dos formulários, devemos fazer a mesma coisa que foi feita no botão,  porém para deixar mais elegante e organizado, vamos fazer algumas verificações, pois caso um valor não seja detectado, exiba uma mensagem para o usuário.

No código a seguir foi utilizado o parâmetro FILTER_VALIDATE_EMAIL, na qual valida se o valor informado é um valor válido, é impossível saber se o e-mail é valido, pois tendo o valor “@” e”.” Os validadores já atribuem como um e-mail válido.

Código 05:

<?php
	$btn = filter_input(INPUT_POST, "btnSubmit", FILTER_SANITIZE_STRING);
	$result = "";
	
	if($btn){
		$nome = filter_input(INPUT_POST, "txtNome", FILTER_SANITIZE_STRING);
		
		if($nome){
			$email = filter_input(INPUT_POST, "txtEmail", FILTER_VALIDATE_EMAIL);
			
			if($email){
				$result = "Nome usuário: {$nome}, e-mail: {$email}";				
			}else{
					$result = "E-mail inválido";
			}
		}else{
			$result = "Nome inválido ";
		}
	}
?>

Basicamente é isto, não há dificuldades muito menos é um bicho de sete cabeças, recuperar valores dos formulários sempre foi e sempre será algo bem simples. Recomendo a leitura dos links abaixo para conhecer ainda mais a função.

 

Manual PHP filter_input() - http://php.net/manual/pt_BR/function.filter-input.php

Manual W3C filter_input() - http://www.w3schools.com/php/func_filter_input.asp

Tipos de filtros: http://www.w3schools.com/php/php_ref_filter.asp

Até a próxima e fiquem com o código completo.

Código 06:

<?php
	$btn = filter_input(INPUT_POST, "btnSubmit", FILTER_SANITIZE_STRING);
	$result = "";
	
	if($btn){
		$nome = filter_input(INPUT_POST, "txtNome", FILTER_SANITIZE_STRING);
		
		if($nome){
			$email = filter_input(INPUT_POST, "txtEmail", FILTER_VALIDATE_EMAIL);
			
			if($email){
				$result = "Nome usuário: {$nome}, e-mail: {$email}";				
			}else{
					$result = "E-mail inválido";
			}
		}else{
			$result = "Nome inválido ";
		}
	}
?>
<!doctype html>
<html lang="pt-br">
	<head>
		<title>Obtendo valores</title>
		<meta charset="UTF-8" />
		<style>
			
			ul{
				list-style: none;
			}
			
			.text{
				font-weight: bold;
				font-family: Segoe UI;
			}
			
			.breakLine{
				margin-bottom:6px;
			}
		</style>
	</head>
	<body>
		<form method="post">
			<ul>
				<li class="text">Nome</li>
				<li class="breakLine"><input type="text" name="txtNome" placeholder="Juanice" /></li>
				
				<li class="text">E-mail</li>
				<li class="breakLine"><input type="text" name="txtEmail" placeholder="juanice_89@msn.com" /></li>
				
				<li class="text">&nbsp;<?=$result;?></li>
				<li><input type="submit" name="btnSubmit" value="Cadastrar" /></li>				
			</ul>
		</form>
	</body>
</html>

 




Sobre o autor


Gunnar Correa

Nome: Gunnar Correa

Site: http://www.gunnarcorrea.com


Autodidata, graduado em Desenvolvimento Web e aluno de pós-graduação em Tecnologias na Educação em uma universidade no interior de São Paulo. Comecei meus estudos na área de programação quando ainda era criança, e atualmente estou estudando desenvolvimento de jogos.

Sou fundador do portal SatellaSoft dentre outros projetos. Nas minhas horas livres quando não estou com meus amigos, estou fazendo alguns cursos.


Comentários



É necessário estar autenticado para comentar, clique aqui para se registrar ou aqui para acessar a sua conta!