Jump to content
Sign in to follow this  
fabiomiguel3

Validação de forms

Recommended Posts

fabiomiguel3

Venho deixar uma contribuição que poderá ser útil a muita gente.

1 passo - adicionar a uma array os campos que quer ver validados:

$campos_obrigatorios = array('nome', 'email', 'telemovel', 'animal');

2 passo - criar um ciclo foreach para cada campo obrigatorio e verifica se esse campo está vazio ou não

foreach($campos_obrigatorios as $field) {
		if(empty($_POST[$field])) {
			$erros[$field] = $field;
                                }
	}if(empty($erros)){

     //INSIRA AQUI O CODIGO QUE DESEJA PROCESSAR SE NÃO HOUVER CAMPOS POR PREENCHER
}

e  voala

validacao.jpg

codigo todo:

$campos_obrigatorios = array('nome', 'email', 'telemovel', 'animal');
          foreach($campos_obrigatorios as $field) {
		if(empty($_POST[$field])) {
			$erros[$field] = $field;
                                }
	}

                if(empty($erros))
                {
                    //LIGAÇÂO DB
                    die('A sua consulta foi marcada com sucesso!');
                }
}

?>


<style >
    #datahora { background-color: yellow;
                width: 135px;}
    #erro {
        background-color: red;
        color: azure;}
</style>
<center>
    <h2>Marcação de consulta</h2>
    <form name="consultas" method="POST" action="marcar.php">

<table border="0">
    <tr>
        <td align="right">Data e hota da consulta:</td>
        <td align="left"><div id="datahora"><strong>27/05/2011 as 15:00</strong></div></td>
    </tr>
     <?php if(!empty($erros['nome'])){ echo '<tr><td align="right"></td><td align="left"><div id="erro"><strong>Preencha o nome:</strong></div></td></tr>';} ?>
    <tr>
        <td align="right">Nome:</td>
        <td align="left"><input type ="text" name="nome" size="25" value="<?php echo @$_POST['nome'];?>"/></td>
    </tr>
    <?php if(!empty($erros['email'])){ echo '<tr><td align="right"></td><td align="left"><div id="erro"><strong>Preencha o endereço de email:</strong></div></td></tr>';} ?>
    <tr>
        <td align="right">Email:</td>
        <td align="left"><input type ="text" name="email" size="20" value="<?php echo @$_POST['email'];?>"/></td>
    </tr>
    <?php if(!empty($erros['telemovel'])){ echo '<tr><td align="right"></td><td align="left"><div id="erro"><strong>Preencha o numero de telemóvel:</strong></div></td></tr>';} ?>
     <tr>
        <td align="right">Telemóvel:</td>
        <td align="left"><input type ="text" name="telemovel" size="10" value="<?php echo @$_POST['telemovel'];?>"/></td>
    </tr>
    <?php if(!empty($erros['animal'])){ echo '<tr><td align="right"></td><td align="left"><div id="erro"><strong>Preencha o nome do animal:</strong></div></td></tr>';} ?>
    <tr>
        <td align="right">Nome do animal:</td>
        <td align="left"><input type ="text" name="animal" size="25" value="<?php echo @$_POST['animal'];?>"/></td>
    </tr>
    <tr>
        <td align="right">Especie do animal:</td>
        <td align="left">Canídeo: <input type="radio"  name="especie" value="canideo" checked="yes" /> Felino: <input type="radio"  name="especie" value="felino" /> Ave: <input type="radio"  name="especie" value="ave" />
</td>
    </tr>
    <tr>
        <td align="right"></td>
        <td align="left"><input type="submit"  name="marcar" value="Marcar"/></td>
    </tr>
</table></center>
</form>

              

validacao.jpg

Share this post


Link to post
Share on other sites
pedrotuga

Boas fabio.

Isto é um exemplo simples que pode ajudar muita gente a perceber o conceito mas está um pouco simples demais, sem ofensa.

Assim só testas se é obrigatório, mas nada. Frequentemente é preciso testar muito mais coisas, comprimentos de strings, caracteres permitidos, etc.

Outro problema é que a validação é metida no meio do controlo da aplicação, o que para regras de validação mais complicadas resulta num confusão.

O que eu aconselho é colocar dentro de um array pares de (campo, função(ões) de validação) e chama-las usando a funcionalidade de funções com nome variável que o php suporta:

http://www.php.net/manual/pt_BR/functions.variable-functions.php

outra opção, talvez mais usada, mas que na maior parte dos cass introduz complexidade desnecessária é criar um tipo de dados (classe) para cada tipo de campo e fazer override da função de validação sempre que necessário.

Share this post


Link to post
Share on other sites
fabiomiguel3

Olá.

a minha filosofia é make it simple! Ou seja não complicar o que não é necessário ser complicado. No meu caso não precisei dessas "validações avançadas" mas poderiam ser adicionadas com bastante facilidade (para mim).

Boas fabio.

Isto é um exemplo simples que pode ajudar muita gente a perceber o conceito mas está um pouco simples demais, sem ofensa.

Assim só testas se é obrigatório, mas nada. Frequentemente é preciso testar muito mais coisas, comprimentos de strings, caracteres permitidos, etc.

Outro problema é que a validação é metida no meio do controlo da aplicação, o que para regras de validação mais complicadas resulta num confusão.

O que eu aconselho é colocar dentro de um array pares de (campo, função(ões) de validação) e chama-las usando a funcionalidade de funções com nome variável que o php suporta:

http://www.php.net/manual/pt_BR/functions.variable-functions.php

outra opção, talvez mais usada, mas que na maior parte dos cass introduz complexidade desnecessária é criar um tipo de dados (classe) para cada tipo de campo e fazer override da função de validação sempre que necessário.

Share this post


Link to post
Share on other sites
yoda

a minha filosofia é make it simple! Ou seja não complicar o que não é necessário ser complicado. No meu caso não precisei dessas "validações avançadas" mas poderiam ser adicionadas com bastante facilidade (para mim).

Este caso precisa de ser "complicado", segurança nunca é algo que se deva levar de ânimo leve.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.