Ir para conteúdo

POWERED BY:

Arquivado

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

RFM

Formulário PHP com erro

Recommended Posts

Galera preciso de uma grande ajuda. Tenho um formulário e o mesmo está atendendo as necessidades, porem estava precisando corrigir alguns erros e programar alguns recursos, já tentei de tudo em fóruns, tutoriais, vídeos e não consigo implantar os recursos abaixo:

 

1º - O usuário ao clicar no botão enviar e realizado a validação retornando uma mensagem de erro ou de agradecimento, o problema está aqui ao enviar ele realiza a validação e mesmo com um retorno de erro o form é enviado, é claro retornando o erro detectado, gostaria de que o mesmo só fosse enviado após a mensagem de agradecimento fosse exibida.

 

2º - Implemetar um redirect neste formulário, onde após alguns segundo após a exibição da mensagem de agradecimento o usuário fosse redirecionado para uma página simples de agradecimento.

 

Tenteis impntar os códigos abaixo mas não consegui:

<?php header('Location: minhapágina.php'); ?>

echo = "<meta http-equiv='Refresh' content='0;URL=link.php>";
Poderiam me ajudar?
<form action="contato.php" method="post">
    <?php
        if($_POST) {

        /*Destinario*/
        $destino = "email@empresa.com.br";
        $nome = "Nome da empresa";

        /*Valores do form*/
         
        $empresa = $_POST["empresa"];//campo reconhecido
        $reme = $_POST["reme"];//campo reconhecido
        $email = $_POST["email"];//campo reconhecido
        $telefone = $_POST["telefone"];//campo reconhecido
        $celular = $_POST["celular"];//campo reconhecido
        $assunto = $_POST["assunto"];//campo reconhecido
        $sugestao = nl2br($_POST['sugestao']);//campo reconhecido
        $header = "From:$reme<$email>";
        $header .= "\nContent-type:text/html;charset=utf-8\n";
        $mensagem .= "<font face=\"Verdana\" size=2>Sugestão enviada por um visitante no formulário Fale Conosco.</font><br>";
        $mensagem .= "=============================================:<br>";
        $mensagem .= "<font face=\"Verdana\" size=2><b>Empresa:</b> $empresa<br>";//campo recuperado
        $mensagem .= "<b>Nome:</b> $reme<br>";//campo recuperado
        $mensagem .= "<b>E-mail:</b> $email<br>";//campo recuperado
        $mensagem .= "<b>Telefone:</b> $telefone<br>";//campo recuperado
        $mensagem .= "<b>Celular:</b> $celular<br>";//campo recuperado
        $mensagem .= "<b>Assunto:</b> $assunto<br>";//campo recuperado
        $mensagem .= "<b>Mensagem:</b> $sugestao</font><br>";//campo recuperado
        $mensagem .= "=============================================:<br>";

        $envia = mail($destino,$assunto,$mensagem,$header);
         
        /*Volores da auto resposta*/

        $assunto_r = "Auto resposta de $SERVER_NAME";

        $msg_r = "<font face=\"Verdana\" size=2>
        Prezado(a) <b>$reme</b>.<br><br>
        Obrigado por entrar em contato! Estaremos respondendo em breve.<br /><br />
        Desde já agradecemos a sua visita.<br><br>
        Nome da Empresa.<br>
        Tel: (99) 9999-9999 / Fax: 9999-9999<br><br>
        <a href='http://www.empresa.com.br'>$SERVER_NAME</a>
        </font>";

        $header_r = "From:$nome<$destino>";
        $header_r .= "\nContent-type:text/html;charset=utf-8\n";
        $envia_r = mail($email,$assunto_r,$msg_r,$header_r);

         

        /*Testa p/ ver se tudo ok*/
        $erro=0;

        if(!preg_match( "/^([0-9,a-z,A-Z]+)([.,_]([0-9,a-z,A-Z]+))*[@]([0-9,a-z,A-Z]+)([.,_\\,-]([0-9,a-z,A-Z]+))*[.]([0-9,a-z,A-Z]){2}([0-9,a-z,A-Z])?$/i","$email")){

            $erro++;
            $erros .= "<center><font color=red>Endereço de e-mail inválido.</font><br>
            Clique <a href='javascript:history.back()'>aqui</a> para Voltar</center><br><br>";
        }

        if(empty($reme) or empty($email) or empty($telefone)or empty($celular) or empty($assunto) or empty($sugestao)) {

            $erro++;

            $erros = "<center>Os campos abaixo são obrigatórios.</center><br>
            <font color=red><b>Nome:</b></font>  Por favor, preencha corretamente!<br>
            <font color=red><b>E-mail:</b></font>  Por favor, preencha corretamente!<br>
            <font color=red><b>Telefone:</b></font>  Por favor, preencha corretamente!<br>
            <font color=red><b>Celular:</b></font>  Por favor, preencha corretamente!<br>
            <font color=red><b>Assunto:</b></font>  Por favor, preencha corretamente!<br>
            <font color=red><b>Mensagem:</b></font>  Por favor, preencha corretamente!<br><br></font>
            <center>Clique <a href='javascript:history.back()'>aqui</a> para Voltar</center><br>";
        }
        
        if($erro !=0){
            echo "$erros";
        }else{
            /*Envia o email*/
            if(!($envia) and ($envia_r)) {
                echo"<font color=red>Erro ao enviar a mensagem</font>";
            } else {
                echo"<center><font color=black>Obrigado <font color=red>$reme</font>.<br>
                A mensagem: <font color=red>$assunto</font> foi enviada com sucesso!
                </font></center><br><br>";
            }
        }

    }
    ?>

    <fieldset>
        <label>
            <span>Empresa</span>
            <input type="text" name="empresa" />
        </label> 
        
        <label>
            <span>(*) Nome</span>
            <input type="text" name="reme" />
        </label>

        <label> 
            <span>(*) E-mail</span>
            <input type="text" name="email" />
        </label>

        <label>
            <span>(*) Telefone</span>
            input type="text" name="telefone" class="input_tel" id="telefone" />
        </label>

        <label>
            <span>(*) Celular</span>
            <input type="text" name="celular" class="input_tel" id="celular" />
        </label>

        <label>
            <span>(*) Assunto</span>
            <input type="text" name="assunto" />
        </label>

        <label>
            <span>(*) Mensagem</span>
            <textarea cols="31" rows="5" name="sugestao"></textarea>
        </label>

        <input type="hidden" name="Sub" value="send" />
        <input type="submit" name="Sub" value="Enviar" class="send" />
    </fieldset>
</form>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O envio do e-mail está sendo realizado antes das validações. Adicione o envio somente após as validações e somente quando não houver erros.

 

Sobre o redirecionamento depois de alguns segundos, utilize a função javascript setTimeout. Nela, você pode definir uma função que será executada a partir de X milisegundos: https://stackoverflow.com/a/17150241/1628790 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prezado Gabriel, realizei as alterações propostas acima, sem sucesso, validando primeiro e enviando depois, ao carregar a página o script com os campos de preenchimento obrigatório são exibidos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poste o seu novo código

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gabriel segue abaixo o código:

<form action="contato.php" method="post">
<?php

/*Testa p/ ver se tudo ok*/

$erro=0;
if(!preg_match( "/^([0-9,a-z,A-Z]+)([.,_]([0-9,a-z,A-Z]+))*[@]([0-9,a-z,A-Z]+)([.,_\\,-]([0-9,a-z,A-Z]+))*[.]([0-9,a-z,A-Z]){2}([0-9,a-z,A-Z])?$/i","$email")){
$erro++;
$erros .= "<center><font color=red>Endereço de e-mail inválido.</font><br>
Clique <a href='javascript:history.back()'>aqui</a> para Voltar</center><br><br>";
}

if(empty($reme) or empty($email) or empty($telefone)or empty($celular) or empty($assunto) or empty($sugestao)){
$erro++;
$erros = "<center>Os campos abaixo são obrigatórios.</center><br>


<font color=red><b>Nome:</b></font>  Por favor, preencha corretamente!<br>
<font color=red><b>E-mail:</b></font>  Por favor, preencha corretamente!<br>
<font color=red><b>Telefone:</b></font>  Por favor, preencha corretamente!<br>
<font color=red><b>Celular:</b></font>  Por favor, preencha corretamente!<br>
<font color=red><b>Assunto:</b></font>  Por favor, preencha corretamente!<br>
<font color=red><b>Mensagem:</b></font>  Por favor, preencha corretamente!<br><br></font> 
<center>Clique <a href='javascript:history.back()'>aqui</a> para Voltar</center><br>";
}

if($erro !=0){
echo"$erros";
}else{

/*Envia o email*/

if($_POST){

/*Destinario*/
$destino = "email";
$nome = "empresa";

/*Valores do form*/

$empresa = $_POST["empresa"];//campo reconhecido
$reme = $_POST["reme"];//campo reconhecido
$email = $_POST["email"];//campo reconhecido
$telefone = $_POST["telefone"];//campo reconhecido
$celular = $_POST["celular"];//campo reconhecido
$assunto = $_POST["assunto"];//campo reconhecido
$sugestao = nl2br($_POST['sugestao']);//campo reconhecido
$header = "From:$reme<$email>";
$header .= "\nContent-type:text/html;charset=utf-8\n";
$mensagem .= "<font face=\"Verdana\" size=2>Sugestão enviada por um visitante no formulário Fale Conosco.</font><br>";
$mensagem .= "=============================================:<br>";
$mensagem .= "<font face=\"Verdana\" size=2><b>Empresa:</b> $empresa<br>";//campo recuperado
$mensagem .= "<b>Nome:</b> $reme<br>";//campo recuperado
$mensagem .= "<b>E-mail:</b> $email<br>";//campo recuperado
$mensagem .= "<b>Telefone:</b> $telefone<br>";//campo recuperado
$mensagem .= "<b>Celular:</b> $celular<br>";//campo recuperado
$mensagem .= "<b>Assunto:</b> $assunto<br>";//campo recuperado
$mensagem .= "<b>Mensagem:</b> $sugestao</font><br>";//campo recuperado
$mensagem .= "=============================================:<br>";
$envia = mail($destino,$assunto,$mensagem,$header);

/*Volores da auto resposta*/

$assunto_r = "Auto resposta de $SERVER_NAME";
$msg_r = "<font face=\"Verdana\" size=2>
Prezado(a) <b>$reme</b>.<br><br>
Obrigado por entrar em contato! Estaremos respondendo em breve.<br /><br />
Desde já agradecemos a sua visita.<br><br>
Empresa.<br>
Tel: (99) 9999999 / Fax: 9999-9999<br><br>
<a href='http://www.empresa.com.br'>$SERVER_NAME</a>
</font>";

$header_r = "From:$nome<$destino>";
$header_r .= "\nContent-type:text/html;charset=utf-8\n";
$envia_r = mail($email,$assunto_r,$msg_r,$header_r);

if(!($envia) and ($envia_r)) {echo"<font color=red>Erro ao enviar a mensagem</font>";
}else{
echo"<center><font color=black>Obrigado <font color=red>$reme</font>.<br>
A mensagem: <font color=red>$assunto</font> foi enviada com sucesso!
</font></center><br><br>";
}
}
}
?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Apesar de você estar validando os erros antes de enviar, não está utilizando a validação de erros para que não envie o e-mail.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos do grupo, saudações e um feliz 2025.
       
      Estou com uma pequena dúvida referente a Teclas de Atalho.

      Quando o Caps Lock está ativado o Comando da Tecla de Atalho não funciona.
      ou seja:
      se estiver para letra minúscula ====> funciona
      se estiver para letra maiúscula ====> não funciona
       
      Como consigo evitar essa falha, tanto para Letra Maiúscula quanto Minúscula ?

      o Código está assim:
      document.addEventListener( 'keydown', evt => { if (!evt.ctrlKey || evt.key !== 'r' ) return;// Não é Ctrl+r, portanto interrompemos o script evt.preventDefault(); });  
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Humildemente peço desculpa por postar uma dúvida que tenho.

      Preciso salvar no MySql, os seguinte Registro:

      1 - Principal
      ====> minha dúvida começa aqui
      ==========> como faço para o Sistema Contar Automaticamente o que estiver despois do 1.____?
      1.01 - Matriz
      1.01.0001 - Estoque
      1.01.0002 - Oficina
      etc

      2 - Secundário
      2.01 - Loja_1
      2.01.0001 - Caixa
      2.01.0002 - Recepção
      etc
       
      Resumindo seria como se fosse um Cadastro de PLANO de CONTAS CONTÁBEIL.

      Grato,


      Cesar









       
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a orientação dos amigos.

      Preciso fazer um Relatório onde o usuário pode Gerar uma Lista com prazo para vencimento de: 15 / 20/ 30 dias da data atual.

      Tem como montar uma SQL para o sistema fazer uma busca no MySql por período ou dias próximo ao vencimento ?

      Tentei fazer assim, mas o SQL me traz tudo:
      $query = "SELECT faturamento.*, DATE_ADD(faturamento.dataVencimento, INTERVAL 30 DAY), fornecedor.* FROM faturamento INNER JOIN fornecedor ON fornecedor.idfornecedor = faturamento.id_fornecedor WHERE faturamento.statusFatur = 1 ORDER BY faturamento.idFaturamento $ordenar ";  
      Grato,
       
      Cesar
       
       
       
       
    • Por violin101
      Caros amigos, saudações
       
      Por favor, me perdoa em recorrer a orientação dos amigos, tenho uma dúvida.
       
      Gostaria de uma rotina onde o Sistema possa acusar para o usuário antes dos 30 dias, grifar na Tabela o aviso de vencimento próximo, por exemplo:
       
      Data Atual: 15/11/2024
                                           Vencimento
      Fornecedor.....................Data.....................Valor
      Fornecedor_1...........01/12/2024..........R$ 120,00 <== grifar a linha de Laranja
      Fornecedor_1...........01/01/2025..........R$ 130,00
      Fornecedor_2...........15/12/2024..........R$ 200,00 <== grifar a linha de Amarelo
      Fornecedor_2...........15/01/2025..........R$ 230,00
      Fornecedor_3...........20/12/2024..........R$ 150,00
       
      Alguém tem alguma dica ou leitura sobre este assunto ?

      Grato,
       
      Cesar
×

Informação importante

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