Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Randolph Lima

Validar campo email

Recommended Posts

Olá!
Estou com a seguinte duvida: Preciso solicitar a segunda via de uma fatura por email. Existem os campos "EMAIL" e "PERIODO" para serem preenchidos. O campo "PERIODO" e um selectbox e não precisar de validação. Já o campo "EMAIL" vai precisar de validação.

No meu codido o mothod esta como post que envia o email e periodo para o seguinte arquivo "2via/geraemail.php". O envio sem validação funciona, porem ele e redirecionado para a pagina e este e meu maior problema.

Resumindo, gostaria de validar e enviar os dados do campo "EMAIL" e "PERIODO" para arquivo "geraemail.php" sem sair da index, evitando redirecionar para o arquivo "geraemail.php". Existe alguma forma de fazer isso? Sou iniciante e não estou conseguindo fazer esse procedimento. Segue o codido.

 

<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="utf-8" />
<title>Vertv - Segunda via da fatura</title>
<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
<link rel="stylesheet" type="text/javascript" href="js/jquery.js">
<link rel="stylesheet" type="text/javascript" href="js/bootstrap.min.js">
</head>

<body>
<!-- Chama arquivo que gera os meses -->
<?php include ("gerames.php"); ?>

<!-- Tratamento e validação do envio do pedido de 2 via -->
<?php

?>

<!-- Inicio do Formulario -->
<form name="form1" method="post" action="http://www.vertv.com.br/2via/geraemail.php">

<!-- Mostra os Erros -->
<?php

?>
<p class="text-warning">2ª Via da Fatura.</p>
    <label for="email">E-mail</label>
    <input type="text" name="bug" class="control-label"><br>
    
    <label for="periodo">Periodo</label>
    <select name="periodo" class=".control-label">
    <!-- PHP para mostrar os meses automaticamente -->
   		 <?php
                switch($nmes){
                        case 1:
		?>
         <option value="<?php echo $mes + 9 .'-'. $anoant; ?>"><?php echo  $mesret .'-'. $anoant; ?></option>
         <option value="<?php echo $mes + 10 .'-'. $anoant; ?>"><?php echo  $mespass .'-'. $anoant; ?></option>
         <option value="<?php echo $mes + 11 .'-'. $anoant; ?>" selected="selected"><?php echo  $mesatu .'-'. $ano; ?></option>


		<?php
           break;
           case 2:
		?>

        <option value="<?php echo $mes + 9 .'-'. $anoant; ?>"><?php echo  $mesret .'-'. $anoant; ?></option>
        <option value="<?php echo $mes + 10 .'-'. $anoant; ?>"><?php echo  $mespass .'-'. $ano; ?></option>
        <option value="<?php echo $mes - 1 .'-'. $ano; ?>" selected="selected"><?php echo  $mesatu .'-'. $ano; ?></option>

		<?php
           break;
           case 3:
		?>

        <option value="<?php echo $mes + 9 .'-'. $anoant; ?>"><?php echo  $mesret .'-'. $ano; ?></option>
        <option value="<?php echo $mes - 2 .'-'. $ano; ?>"><?php echo $mespass .'-'. $ano; ?></option>
        <option value="<?php echo $mes - 1 .'-'. $ano; ?>" selected="selected"><?php echo  $mesatu .'-'. $ano; ?></option>

		<?php
          break;
          default:
		?>

       <option value="<?php echo $mes - 3 .'-'. $ano; ?>"><?php echo $mesret .'-'. $ano; ?></option>
       <option value="<?php echo $mes - 2 .'-'. $ano; ?>"><?php echo $mespass .'-'. $ano; ?></option>
       <option value="<?php echo $mes - 1 .'-'. $ano; ?>" selected="selected"><?php echo $mesatu .'-'. $ano; ?></option>

		<?php
          }
		?>
    
    </select><br>
    <!-- Botão para enviar os dados -->
    <input type="submit" name="enviar" class=".btn btn-large btn-block btn-primary" value="Solicitar 2ª Via">
</form>
</body>
</html>

Aguardo a contato.

t+



Compartilhar este post


Link para o post
Compartilhar em outros sites

AJAX / jQuery

 

Para validar o campo, para entrada de email, utilize o próprio JavaScript, e uma validação pelo PHP também é bem vinda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Duas formas:

Primeira:

O Alaerte Gabriel já citou. AJAX ou JQUERY.

Segunda:

Você pode criar uma central de entrada de dados e validando com redirecionamento da ação via método GET.

por exemplo:

Um arquivo chamado nomequevocequiser.php (prefiro action.php, inputData.php ou acoes.php. Sei lá, voce escolhe) recebendo duas entradas via GET e POST (GET para direcionar a ação para uma switch, if ou que voce achar melhor e o POST para enviar seus dados) sendo assim você estabelece uma include ou require (dentro do arquivo central de acoes) para o arquivo "geraemail.php".

Assim voce evita que o arquivo "geraemail.php" seja visualizado na barra do navegador.

Lembrando que a segunda opção sairá da index.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agradeço a ajuda de todos!

Verifiquei os links e chegei numa conclusão bem simples, porem ainda não resolveo o problema. Adicionei:

<script>
function valida_envia(){
    //valido o nome
    if (document.form1.email.value.length==0){
       alert("Digite o Email Corretamente")
       document.form1.email.focus()
       return 0;
    }

    //o formulário se envia
    alert("2ª via enviada com sucesso!");
    document.form1.submit();
} 

</script>

Ele valida e funciona normalmente, porem ele continua redirecionando para a pagina "geraemail.php". Eu gostaria de enviar os campos email e periodo e continuar na index, sem redirecionar a pagina. Existe alguma forma de fazer isso?

Agradeço desde ja, t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está usando HTML5 cara, não precisa de javascript para validar e-mail, basta usar a semântica que ele te oferece.

 

<input type="email" name="email" required>

Pronto, não precisa validar nada, o HTML5 faz tudo para você além de tornar o campo obrigatório.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal (Y)

 

ricardobarantini
Eu ja estou usando o "required". Eu que esqueci de atualizar o codigo aqui no post, desculpe.


No meu caso a validação na minha pagina ja esta resolvida, porem quando eu envio o campo "email" e "periodo" para o link "http://www.vertv.com.br/2via/geraemail.php" ele me redireciona para la, eu gostaria apenas de enviar o campo como POST sem ser redirecionado, existe essa possibilidade no php?

 

Eu não estou usando o ajax e jquery por falta de experiencia mesmo.

 

att

Obs: Agradeço a ajuda de todos, Obrigado!

 

Edit: Postando o codigo sem o action para envio. Ainda estou procurando uma forma de enviar o POST para o link.

 

<?php //error_reporting(0); ini_set("display_errors", 0 );?>
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="utf-8" />
<title>Vertv - Segunda via da fatura</title>
<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
<link rel="stylesheet" type="text/javascript" href="js/jquery.js">
<link rel="stylesheet" type="text/javascript" href="js/bootstrap.min.js">
</head>

<body>
<!-- Chama arquivo que gera os meses -->
<?php include ("gerames.php"); ?>

<!-- Tratamento e validação do envio do pedido de 2 via -->
<?php
$erro	=	null;
$valido	=	false;

if (isset($_REQUEST['validar']) && $_REQUEST['validar'] == true) {

	if(strlen($_POST['email']) < 5) {
		$erro =	"Preencha o Email Corretamente!";}

	else {
	$valido = true;
}}
?>

<!-- Mostra os Erros -->
<?php
if(!$valido) {
	if(isset($erro)) {
		echo $erro . "<BR><BR>";
	}
?>

<!-- Inicio do Formulario -->
<form name="form1" method="post" action="?validar=true">
<p class="text-warning">2ª Via da Fatura.</p>
    <label for="email">E-mail</label>
    <input type="text" name="email" class="control-label" required><br>
    
    <label for="periodo">Periodo</label>
    <select name="periodo" class=".control-label">
    <!-- PHP para mostrar os meses automaticamente -->
   		 <?php
                switch($nmes){
                        case 1:
		?>
         <option value="<?php echo $mes + 9 .'-'. $anoant; ?>"><?php echo  $mesret .'-'. $anoant; ?></option>
         <option value="<?php echo $mes + 10 .'-'. $anoant; ?>"><?php echo  $mespass .'-'. $anoant; ?></option>
         <option value="<?php echo $mes + 11 .'-'. $anoant; ?>" selected="selected"><?php echo  $mesatu .'-'. $ano; ?></option>


		<?php
           break;
           case 2:
		?>

        <option value="<?php echo $mes + 9 .'-'. $anoant; ?>"><?php echo  $mesret .'-'. $anoant; ?></option>
        <option value="<?php echo $mes + 10 .'-'. $anoant; ?>"><?php echo  $mespass .'-'. $ano; ?></option>
        <option value="<?php echo $mes - 1 .'-'. $ano; ?>" selected="selected"><?php echo  $mesatu .'-'. $ano; ?></option>

		<?php
           break;
           case 3:
		?>

        <option value="<?php echo $mes + 9 .'-'. $anoant; ?>"><?php echo  $mesret .'-'. $ano; ?></option>
        <option value="<?php echo $mes - 2 .'-'. $ano; ?>"><?php echo $mespass .'-'. $ano; ?></option>
        <option value="<?php echo $mes - 1 .'-'. $ano; ?>" selected="selected"><?php echo  $mesatu .'-'. $ano; ?></option>

		<?php
          break;
          default:
		?>

       <option value="<?php echo $mes - 3 .'-'. $ano; ?>"><?php echo $mesret .'-'. $ano; ?></option>
       <option value="<?php echo $mes - 2 .'-'. $ano; ?>"><?php echo $mespass .'-'. $ano; ?></option>
       <option value="<?php echo $mes - 1 .'-'. $ano; ?>" selected="selected"><?php echo $mesatu .'-'. $ano; ?></option>

		<?php
          }
		?>
    
    </select><br>
    <!-- Botão para enviar os dados -->
    <input type="submit" name="enviar" class=".btn btn-large btn-block btn-primary" value="Solicitar 2ª Via">
</form>
<?php }
	else {
	echo "Email enviado com sucesso!";
}
?>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.