Ir para conteúdo

POWERED BY:

Arquivado

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

fabricio2009

[Resolvido] Formulario PHP com redirecionamento em caso de erro

Recommended Posts

Olá pessoal boa noite, não sei se vou conseguir explicar muito bem o que eu preciso, é a primeira vez que entro num fórum então desculpa ai se errar em algo XD

 

Bom , estou querendo colocar um formulário PHP no site que estou desenvolvendo, já tenho o form pronto, minha dor de cabeça é a seguinte:

 

Quero colocar uma opção: Por exemplo: quando a pessoa digitar no formulários os dados para serem enviados para mim, se acaso ela digitar alguma coisa errada, e-mail errado ou digitar um monte de * (asterisco) ou seja, der algum erro. Quero que ele seja redirecionado para uma pagina que diz a seguinte msg:

 

Sua mensagem não pôde ser enviada

 

Por favor, verifique se você preencheu todos os campos necessários e que o endereço de e-mail digitado é válido.

 

Pressione o botão voltar do seu navegador e tente novamente.

 

Tenho três arquivos:

 

enviar.php, contactsuccess.html e contacterror.html, o contactsuccess se a mensagem for enviada certinha, e o contacterror.html se der erro.

 

Preciso apenas sabe como colocar a função para redirecionar no caso de erro. Obrigado.

 

Esse é meu código do form:

 

<?
$nome      = $_POST["nome"];
$email   = $_POST["email"];
$assunto   = $_POST["assunto"];
$mensagem  = $_POST["mensagem"];
$exibir_apos_enviar = 'contactsuccess.html';

global $email;

$data      = date("d/m/y");
$ip        = $_SERVER['REMOTE_ADDR'];
$navegador = $_SERVER['HTTP_USER_AGENT'];
$hora      = date("H:i");

mail ("contato@fabricioscalon.com.br", 
     "$assunto",
     "Nome: $nome\nE-mail: $email\nIp: $ip\nNavegador: $navegador\nData: $data\nHora: $hora\nMensagem: $mensagem",
     "From: $email"
    );

$site   = "contato@fabricioscalon.com.br";
$titulo = "Confirmação de envio de mensagem";
$msg    = "$nome, obrigado por entrar em contato comigo, retornarei o mais breve possível.";
$exibir_apos_enviar = 'contactsuccess.html';

mail("$email",
    "$titulo",
    "$msg",
    "From: $site"
   );
echo "<script>window.location='$exibir_apos_enviar'</script>";
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Simples cara.

 

Faz um IF com a função que você usa pra validar erros. Se houver erros, usar header() ou meta refresh pra redirecionar pra página de erro. Se não, redireciona pra página de sucesso.

 

Agora, se você quer funções pra verificação, dá uma "googlada" que tua acha!

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

brigadão cara pela info mais eu sou iniciante de tudo em PHP to fazendo esse formulário através de vídeo aulas e tutorial que encontro na net, não entendi muito bem o que eu preciso fazer , eu quero o jeito mais simples só pra que a pessoa não chega lá no formulário e sai teclando qualquer coisa qualquer e-mail e envie, sabe .

 

Mesmo assim obrigado pela dica, vou tentar achar algum tutorial q tenha um form feito dessa forma pra eu entender..

 

Abs fica co Deus.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa cara,

 

Pega essa classe aqui:

 

<?php

class Verificacao {
	
	/**
	 * Verifica se um campo foi preenchido
	 * Se foi, retorna TRUE, se não, retorna FALSE
	 */
	function CampoObrigatorio($campo)
    {
        if (empty($campo) || $campo == " ") {

            return false;
            
        } else {

            return true;
        }
    }
    
    /**
	 * Verifica se um campo contém caracteres não permitidos
	 * Se sim, retorna TRUE, se não, retorna FALSE
	 * Defina que tipo de caracteres quer permitir, utilizando o parâmetro $tipo
	 * Lista:
	 *   - letras_espacos > apenas letras e espaços
	 *   - letras > apenas letras
	 *   - numeros > apenas números
	 *   - letras_numeros > apenas letras e números
	 *   - letras_numeros_espacos > apenas letras, números e espaços
	 * 
	 * Exemplo: VerCaracteres(campo_x, letras); // Apenas letras são permitidas no campo_x
	 */
    function VerCaracteres($campo, $tipo)
    {
        $padrao = "";

        if ($tipo == "letras_espacos") {

            $this->padrao = "/^[a-zA-ZãÃáÁàÀêÊéÉèÈíÍìÌôÔõÕóÓòÒúÚùÙûÛçǺª' ']+$/";
        } else
            if ($tipo == "letras") {

                $this->padrao = "/^[a-zA-ZãÃáÁàÀêÊéÉèÈíÍìÌôÔõÕóÓòÒúÚùÙûÛçǺª]+$/";
            } else
                if ($tipo == "numeros") {

                    $this->padrao = "/^[0-9]+$/";
                } else
                    if ($tipo == "letras_numeros") {

                        $this->padrao = "/^[a-zA-ZãÃáÁàÀêÊéÉèÈíÍìÌôÔõÕóÓòÒúÚùÙûÛçǺª0-9]+$/";
                    } else
                        if ($tipo == "letras_numeros_espacos") {

                            $this->padrao = "/^[a-zA-ZãÃáÁàÀêÊéÉèÈíÍìÌôÔõÕóÓòÒúÚùÙûÛçǺª0-9' ']+$/";
                        }

        if (preg_match($this->padrao, $campo)) {

            return true;
            
        } else {

            return false;
        }
    }
    
    /**
	 * Verifica se um campo é um e-mail válido ou uma data válida
	 * Se sim, retorna TRUE, se não, retorna FALSE
	 * Defina qual tipo deseja validar, no parâmetro $formato
	 * Lista:
	 *   - data > verifica se o campo é uma data válida no formato dd/mm/yyyy
	 *   - email > verifica se o campo é um e-mail válido no formato exemplo@site.ext
	 * 
	 * Exemplo: VerEspeciais(campo_x, email); // Verifica se o campo_x é um e-mail válido
	 */
    function VerEspeciais($campo, $formato)
    {

        if ($formato == "data") {

            $this->pattern = "^([0-9]){2}/([0-9]){2}/([0-9]){4}$";
        } else
            if ($formato == "email") {

                $this->pattern = "^(.[^' ']+)@(.[^' ']+)\.([^' '].+)$";
            }
        if (ereg($this->pattern, $campo)) {

            return true;
            
        } else {

            return false;
        }

    }

}

$ver = new Verificacao;

?>

Ela tem três funções que verificam coisas básicas do formulário. Ae na hora de usar, faça:

 

<?php

if($ver->CampoObrigatorio($campo)) { // Verifica se $campo foi preenchido
	
	if($ver->VerEspeciais($campo, "email")) { // Verifica se $campo é um e-mail
		
		// Se for, redireciona o usuário pra sucesso.php
		header("location: sucesso.php");
		exit();
	}
	else {
		
		// Se não for, redireciona o usuário pra erro.php
		header("location: erro.php");
		exit();
	}
}
else { 
	
	// Se não foi, redireciona o usuário pra erro.php
	header("location: erro.php");
	exit();
}

?>

Qulquer dúvida posta ae!

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiramente quero agradecer por toda a ajuda que você esta me dando.

 

Tenho uma outra duvida, eu tenho que salvar uma nova pagina .php ou devo colocar junto com meu código do form?

 

Tipo eu vou usar o meu mesmo código? e incluir aquela classe q me passou?

 

Obrigado!

 

<?

$nome      = $_POST["nome"];
$email   = $_POST["email"];
$assunto   = $_POST["assunto"];
$mensagem  = $_POST["mensagem"];
$exibir_apos_enviar = 'contactsuccess.html';

global $email;

$data      = date("d/m/y");
$ip        = $_SERVER['REMOTE_ADDR'];
$navegador = $_SERVER['HTTP_USER_AGENT'];
$hora      = date("H:i");

mail ("contato@fabricioscalon.com.br", 
     "$assunto",
     "Nome: $nome\nE-mail: $email\nIp: $ip\nNavegador: $navegador\nData: $data\nHora: $hora\nMensagem: $mensagem",
     "From: $email"
    );

$site   = "contato@fabricioscalon.com.br";
$titulo = "Confirmação de envio de mensagem";
$msg    = "$nome, obrigado por entrar em contato comigo, retornarei o mais breve possível.";
$exibir_apos_enviar = 'contactsuccess.html';

mail("$email",
    "$titulo",
    "$msg",
    "From: $site"
   );
echo "<script>window.location='$exibir_apos_enviar'</script>";
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tipo,

 

Se essa página que você colocou aqui for a action do teu formulário, você deverá inserir aquela classe nessa mesma página e montar a verificação de acordo com sua necessidade.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo, desculpe ai o tanto de pergunta e obrigado pela paciência é como eu disse num sei quase nada de PHP.

 

Ó deu quase certo fiz desse jeito: Funciono mais qualquer msg que manda aparece a pagina de erro, mesmo se eu digitar certinho...

 

Como posso corrigir isso?

 

Obrigado.

 

<?
class Verificacao {                

       /**  
        * Verifica se um campo foi preenchido         
        * Se foi, retorna TRUE, se não, retorna FALSE         
        */        
       function CampoObrigatorio($campo)    
   {        
       if (empty($campo) || $campo == " ") {

        return false;                    

	} else {            

		return true;        
    }    
}

/**         
     * Verifica se um campo contém caracteres não permitidos         
     * Se sim, retorna TRUE, se não, retorna FALSE         
     * Defina que tipo de caracteres quer permitir, utilizando o parâmetro $tipo
     * Lista:         
     *   - letras_espacos > apenas letras e espaços         
     *   - letras > apenas letras         
        *   - numeros > apenas números         
     *   - letras_numeros > apenas letras e números         
     *   - letras_numeros_espacos > apenas letras, números e espaços         
     *    
     * Exemplo: VerCaracteres(campo_x, letras); // Apenas letras são permitidas no campo_x         
     */
   function VerCaracteres($campo, $tipo)    
{        
    $padrao = "";        

	if ($tipo == "letras_espacos") {            

		$this->padrao = "/^[a-zA-ZãÃáÁàÀêÊéÉèÈíÍìÌôÔõÕóÓòÒúÚùÙûÛçǺª' ']+$/";        
	} else
	    if ($tipo == "letras") {                

		    $this->padrao = "/^[a-zA-ZãÃáÁàÀêÊéÉèÈíÍìÌôÔõÕóÓòÒúÚùÙûÛçǺª]+$/";            
		} else                
		    if ($tipo == "numeros") {                    

			    $this->padrao = "/^[0-9]+$/";
			} else                    
			    if ($tipo == "letras_numeros") {                        

				    $this->padrao = "/^[a-zA-ZãÃáÁàÀêÊéÉèÈíÍìÌôÔõÕóÓòÒúÚùÙûÛçǺª0-9]+$/";                    
			    } else                        
				    if ($tipo == "letras_numeros_espacos") {                            

					    $this->padrao = "/^[a-zA-ZãÃáÁàÀêÊéÉèÈíÍìÌôÔõÕóÓòÒúÚùÙûÛçǺª0-9' ']+$/";
					}        

		if (preg_match($this->padrao, $campo)) {            
		    return true;                    
		} else {            
		    return false;       
		}    
	}

	/**         
	     * Verifica se um campo é um e-mail válido ou uma data válida         
		 * Se sim, retorna TRUE, se não, retorna FALSE         
		 * Defina qual tipo deseja validar, no parâmetro $formato         
		 * Lista:         
		 *   - data > verifica se o campo é uma data válida no formato dd/mm/yyyy         
		 *   - email > verifica se o campo é um e-mail válido no formato exemplo@site.ext         
		 *          
		 * Exemplo: VerEspeciais(campo_x, email); // Verifica se o campo_x é um e-mail válido         
		 */    
   function VerEspeciais($campo, $formato)    
   {        

       if ($formato == "data") {            

		   $this->pattern = "^([0-9]){2}/([0-9]){2}/([0-9]){4}$";        
	   } else            
	       if ($formato == "email") {                

		        $this->pattern = "^(.[^' ']+)@(.[^' ']+)\.([^' '].+)$";            
		   }        
	   if (ereg($this->pattern, $campo)) {            

	       return true;                    
	   } else {            

		   return false;      
	   }    

 }

}

$ver = new Verificacao;

if($ver->CampoObrigatorio($campo)) { // Verifica se $campo foi preenchido                

	if($ver->VerEspeciais($campo, "email")) { // Verifica se $campo é um e-mail 
	          // Se for, redireciona o usuário pra sucesso.php
			  header("location: contactsuccess.php");                
			  exit();        
	 }        
	 else {                                
	         // Se não for, redireciona o usuário pra erro.php                
			 header("location: contacterror.php");                
			 exit();        
	 }
}
else {                 
        // Se não foi, redireciona o usuário pra erro.php        
	 header("location: contacterror.php");        
	 exit();

}

$nome      = $_POST["nome"];
$email   = $_POST["email"];
$assunto   = $_POST["assunto"];
$mensagem  = $_POST["mensagem"];
$exibir_apos_enviar = 'contactsuccess.html';

global $email;

$data      = date("d/m/y");
$ip        = $_SERVER['REMOTE_ADDR'];
$navegador = $_SERVER['HTTP_USER_AGENT'];
$hora      = date("H:i");

mail ("contato@fabricioscalon.com.br", 
     "$assunto",
     "Nome: $nome\nE-mail: $email\nIp: $ip\nNavegador: $navegador\nData: $data\nHora: $hora\nMensagem: $mensagem",
     "From: $email"
    );

$site   = "contato@fabricioscalon.com.br";
$titulo = "Confirmação de envio de mensagem";
$msg    = "$nome, obrigado por entrar em contato comigo, retornarei o mais breve possível.";
$exibir_apos_enviar = 'contactsuccess.html';

mail("$email",
    "$titulo",
    "$msg",
    "From: $site"
   );
echo "<script>window.location='$exibir_apos_enviar'</script>";

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

consegui resolver meu problema a solução foi esta:

 

<?$erro = ''; // aqui estou apenas setando a $erro.if(empty($_POST['nome'])) $erro .= '- Nome<br/>';// aqui estou dizendo para o script. SE $_POST['nome'] FOR VAZIA, a $erro vai ser acrescentada o texto ' - Nome<br/>'if(empty($_POST['email'])) $erro .= '- E-mail<br/>';// aqui estou dizendo para o script. SE $_POST['email'] FOR VAZIA, a $erro vai ser acrescentada o texto ' - E-mail<br/>'// faça a mesma coisa para as outras variáveis que estão aqui abaixo.$nome      = $_POST["nome"];$email   = $_POST["email"];$assunto   = $_POST["assunto"];$mensagem  = $_POST["mensagem"];$exibir_apos_enviar = 'contactsuccess.html';//global $email; esta linha é desnecessária$data      = date("d/m/y");$ip        = $_SERVER['REMOTE_ADDR'];$navegador = $_SERVER['HTTP_USER_AGENT'];$hora      = date("H:i");//aqui vou testar. Caso todos os campos tenham sido preenchidos, a $erro vai estar vazia e vai entrar no ifif (empty($erro)){     mail ("contato@meusite.com.br",       "$assunto",      "Nome: $nome\nE-mail: $email\nIp: $ip\nNavegador: $navegador\nData: $data\nHora: $hora\nMensagem: $mensagem",      "From: $email"     );     $site   = "contato@meusite.com.br";     $titulo = "Confirmação de envio de mensagem";     $msg    = "$nome, obrigado por entrar em contato comigo, retornarei o mais breve possível.";     $exibir_apos_enviar = 'contactsuccess.html';     mail("$email",     "$titulo",     "$msg",     "From: $site"    );    header("location:$exibir_apos_enviar");}// aqui dentro do else é o que vai ser feito caso não tenha preenchido corretamente os camposelse{    echo 'Os campos abaixo são obrigatórios e não foram preenchidos.<br/>'.$erro;}

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.