Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 291

validação capcha

21-05-2014 10:17

Preenchendo o formulário normalmente se faltar algum campo exibe um alerta, mas se colocarmos um valor errado no campo da soma no capcha, o email vai normal,
poderiam me ajudar para validar isso?

segue:

<?     $h1            = 'Contato';     $title         = 'Contato';     $desc          = 'Envie sua mensagem para nossa empresa e aguarde nosso contato...';     $key           = '';     $keyfrases  = '';     $ind           = 'Contato';          require_once("phpmailer/class.phpmailer.php");          include('inc/head.php');     require("inc/funcoes.php"); //capcha com soma // $n1 = rand(1,10); $n2 = rand(1,10); $soma = $n1+$n2; ?> </head> <script type="text/javascript">     function Validar(){     var soma = "<?php echo $soma; ?>";     var campo = document.getElementById("captcha").value;     if(campo == soma){     alert("correto");     }else{     alert("incorreto");     }              } </script> <body> <div class="geral">     <? include('inc/topo.php');?>     <div class="layout">         <?=$caminho?>         <h1><a href="<?=$urlPagina?>" title="<?=$h1?>"><?=$h1?></a></h1>         <div class="formulario">             <form action="" method="post" >             <?php                 if(isset($_POST['submit'])){                                  if(PHP_OS == "Linux") $quebra_linha = "\n"; //Se for Linux                 elseif(PHP_OS == "WINNT") $quebra_linha = "\r\n"; // Se for Windows                 else die("Este script nao esta preparado para funcionar com o sistema operacional de seu servidor");                                  $nome             = $_POST['nome'];                 $nomeTratado     = tratar_letras($_POST['nome']);                 $empresa         = $_POST['empresa'];                 $telefone          = $_POST['telefone'];                 $email             = $_POST['email'];                 $como_conheceu    = $_POST['como_conheceu'];                 $mensagem          = $_POST['mensagem'];                 $assunto         = "Contato via site";                                   $date             = date("d/m/Y H:i:s");               //função para pegar a data de envio do e-mail                 $ip                = $_SERVER['REMOTE_ADDR'];           //função para pegar o ip do usuário                 $navegador         = $_SERVER['HTTP_USER_AGENT'];       //função para pegar o navegador do visitante                 $verifica_email ="^[a-z A-Z 0-9 _ - .]+[@]+[a-z A-Z 0-9 _ - .]+[.]+[a-z A-Z 0-9 _ - .]^";                                                                          $erros = "";                 if(empty($_POST['nome']))                 {                     $erros .= '<div id="Erro"><img src="imagens/erro.gif" />Insira seu NOME</div><br />';                 }                                  elseif(empty($_POST['telefone']))                 {                     $erros .= '<div id="Erro"><img src="imagens/erro.gif" />Insira seu TELEFONE</div><br />';                 }                                  elseif(empty($_POST['email']))                 {                     $erros .= '<div id="Erro"><img src="imagens/erro.gif" />Insira um EMAIL</div><br />';                 }                                  elseif (!preg_match($verifica_email,$email))                 {                     $erros .= '<div id="Erro"><img src="imagens/erro.gif" />Insira um EMAIL válido</div><br />';                 }                                  elseif(empty($_POST['como_conheceu']))                 {                     $erros .= '<div id="Erro"><img src="imagens/erro.gif" />Selecione uma das opções COMO NOS CONHECEU?</div><br />';                 }                                                          elseif(empty($_POST['mensagem']))                 {                     $erros .= '<div id="Erro"><img src="imagens/erro.gif" />Escreva sua MENSAGEM</div><br />';                 }                                  if( empty($erros) ){                                      $dominio = str_replace('www.', '', $dominio);                                          $phpmail = new PHPMailer();                                          $phpmail->IsSMTP(); // envia por SMTP                     $phpmail->Host        = $dominio; // SMTP servers                     $phpmail->SMTPAuth    = true; // Caso o servidor SMTP precise de autenticação                     $phpmail->Username    = $emailRemetente; // SMTP username                     $phpmail->Password    = $senhaEmail; // SMTP password                                      $phpmail->IsHTML(true);                     $phpmail->From        = $emailRemetente;                     $phpmail->FromName    = $nomeTratado;                     $phpmail->Sender     = $emailRemetente;                                      $phpmail->AddAddress($emailContato);                     //$phpmail->AddCC ('xxxxx@dominio.com');                     //$phpmail->AddBCC('xxxxx@dominio.com');                     $phpmail->AddReplyTo($email, $nomeTratado);                     $phpmail->Subject = $assunto;                     $phpmail->Body .= "<h2>Contato via site $nomeSite</h2>                     <div style=\"font: 12px calibri, arial, tahoma;\">                     <table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">                         <tr>                             <td valign=\"top\" style=\"width: 160px;\">                                 <strong>                                     Nome:<br />                                     Empresa:<br />                                     Telefone:<br />                                     Email:<br />                                     Como nos conheceu?:<br />                                     Mensagem:<br />                                 </strong>                             </td>                             <td valign=\"top\">                                 $nome<br />                                 $empresa<br />                                 $telefone<br />                                 $email<br />                                 $como_conheceu<br />                             </td>                         </tr>                     </table>                     $mensagem<br />                     </div>                     <font color='#666666' size='1'><br /><br />Email enviado em: $date - IP: $ip <br /> (Enviado via SMTP)</font><br />";                                  $send = $phpmail->Send();                 if($send)                 {                     echo '<div id="Sucesso"><img src="imagens/sucesso.png" />Email Enviado com Sucesso...</div><br />';                     echo '<meta HTTP-EQUIV="Refresh" CONTENT="6;URL='.$url.'">' ;                 }                 if(!$send)                 {                         // mensagem que vai para o destinatario                         $msg="                         <h2>Contato via site $nomeSite</h2>                         <div style=\"font: 12px calibri, arial, tahoma;\">                         <table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">                             <tr>                                 <td valign=\"top\" style=\"width: 160px;\">                                     <strong>                                         Nome:<br />                                         Empresa:<br />                                         Telefone:<br />                                         Email:<br />                                         Como nos conheceu?:<br />                                         Mensagem:<br />                                     </strong>                                 </td>                                 <td valign=\"top\">                                     $nome<br />                                     $empresa<br />                                     $telefone<br />                                     $email<br />                                     $como_conheceu<br />                                 </td>                             </tr>                         </table>                         $mensagem<br /><br />                         </div>                         <font color='#666666' size='1'><br /><br />Email enviado em: $date - IP: $ip <br /> (Enviado deslogado)</font><br />";                                                  /* Montando o cabeçalho da mensagem */                         $headers = "MIME-Version: 1.1".$quebra_linha;                         $headers .= "Content-type: text/html; charset=utf-8".$quebra_linha;                         // Perceba que a linha acima contém "text/html", sem essa linha, a mensagem não chegará formatada.                         $headers .= "From: \"$nomeSite\" <$emailRemetente>".$quebra_linha;                         $headers .= "Return-Path: \"$nomeSite\" <$emailRemetente>".$quebra_linha;                         // Esses dois "if's" abaixo são porque o Postfix obriga que se um cabeçalho for especificado, deverá haver um valor.                         // Se não houver um valor, o item não deverá ser especificado.                         if(strlen($comcopia) > 0) $headers .= "Cc: ".$comcopia.$quebra_linha;                                                  if(strlen($comcopiaoculta) > 0) $headers .= "Bcc: ".$comcopiaoculta.$quebra_linha;                         $headers .= "Reply-To: \"$nomeTratado\" <$email>".$quebra_linha;                         // Note que o e-mail do remetente será usado no campo Reply-To (Responder Para)                                                  /* Enviando a mensagem */                         $mail = mail($emailContato, $assunto, $msg, $headers, "-r". $emailContato);                                              // verifica se email foi enviado com sucesso                       if($mail==TRUE)                         {                             echo '<div id="Sucesso"><img src="imagens/sucesso.png" />Email Enviado com Sucesso!</div>';                             echo '<meta HTTP-EQUIV="Refresh" CONTENT="6;URL='.$url.'">' ;                         }                         else                          {                             echo '<div id="Erro"><img src="imagens/erro.gif" />Email Falhou!</div>';                         }                 }                 }                 else                 {                     echo $erros;                 }                 }             ?>             <label>Nome <span class="alerta">*</span></label>             <input onKeyUp="UcWords(this)" name="nome" value="<?php echo($nome);?>" type="text" size="35" /><br />             <label>Empresa</label>             <input value="<?php echo($empresa);?>" name="empresa" id="empresa" type="text" size="30" onKeyUp="UcWords(this)" /><br />             <label>Telefone <span class="alerta">*</span></label>             <input name="telefone" value="<?php echo($telefone);?>" type="text" size="11" maxlength="13" onKeyUp="return autoTab(this, 13, event);" onKeyPress="formatar(this, '(##)#########')" /> <span class="ajuda">Digitar somente números. Incluir o DDD.</span><br />             <label>Email <span class="alerta">*</span></label>             <input onKeyUp="minusculas(this)" name="email" value="<?php echo($email);?>" type="text" size="35" /><br />             <label>Como nos conheceu? <span class="alerta">*</span></label>             <select name="como_conheceu">                 <option value="">-- Selecione --</option>                 <option <? if ($como_conheceu== 'Busca do Google') echo "selected"; ?> value="Busca do Google">Busca do Google</option>                 <option <? if ($como_conheceu== 'Outros Buscadores') echo "selected"; ?> value="Outros Buscadores">Outros Buscadores</option>                 <option <? if ($como_conheceu== 'Links patrocinados') echo "selected"; ?> value="Links patrocinados">Links patrocinados</option>                 <option <? if ($como_conheceu== 'Facebook') echo "selected"; ?> value="Facebook" onClick="esconde()">Facebook</option>                 <option <? if ($como_conheceu== 'Twitter') echo "selected"; ?> value="Twitter" onClick="esconde()">Twitter</option>                 <option <? if ($como_conheceu== 'Google+') echo "selected"; ?> value="Google+" onClick="esconde()">Google+</option>                 <option <? if ($como_conheceu== 'Indicação de um amigo') echo "selected"; ?> value="Indicação de um amigo" onClick="esconde()">Indicação de um amigo</option>                 <option <? if ($como_conheceu== 'Outros') echo "selected"; ?> value="Outros" onClick="esconde()">Outros</option>             </select>             <br />             <label>Mensagem <span class="alerta">*</span></label>             <textarea name="mensagem" cols="37" rows="10"><?=$mensagem;?></textarea><br />                          <div style="width:500px; margin:0 auto; text-align:center; float:right;">Some: <?php echo "$n1 + $n2 = "; ?>             <input type="text" name="captcha" id="captcha" maxlength="2" required="required" size="2">             </div>             <br>                                       <label style="color: #fff;">.</label><input type="submit" name="submit" value="Enviar mensagem"/><br /><br />             <label style="color: #fff;">.</label>Os campos com (<span class="alerta">*</span>) são obrigatórios.<br /><br /><br /><br />         </form>         </div>         <div class="contatos">             <h3><?=$nomeSite;?> - <?=$slogan;?></h3>             <strong><?=$ddd;?> <?=$fone;?> / <?=$fone2;?></strong><br />             <strong>Email: <?=$emailContato;?></strong><br /><br />             <strong><?=$rua;?> - <?=$bairro;?> - <?=$cidadeUF;?> - <?=$cep;?></strong><br /><br />                                       <img src="imagens/contato.png">                      </div>                  <br class="clear" />              </div>     <? include('inc/rodape.php');?> </div> </body> </html>

0
 
Mais de 100 postagens
Mais de 100 postagens
Mensagens: 166
Nome: Bruno Bandeira
Sexo: Masculino
Contato:

validação capcha

21-05-2014 10:26

Não localizei o momento que tu chama a função "Validar()" que você escreveu em JS
0
 
Mais de 100 postagens
Mais de 100 postagens
Mensagens: 166
Nome: Bruno Bandeira
Sexo: Masculino
Contato:

validação capcha

21-05-2014 10:33

Eu não testei, mas você pode tentar algo nessa linha!

    $(document).ready(function(){ $('form').submit(function(){ var soma = "<?php echo $soma; ?>"; var campo = document.getElementById("captcha").value; if(campo == soma){ alert("correto"); }else{ alert("incorreto"); } }) });    

0
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 291

validação capcha

21-05-2014 10:45

a questao que isso não ta funcionando

$(document).ready(function(){ $('form').submit(function(){ var soma = "<?php echo $soma; ?>"; var campo = document.getElementById("captcha").value; if(campo == soma){ alert("correto"); }else{ alert("incorreto"); } }) });

preenchemos o formulario, mas se por acaso no capcha colocarmos o valor errado, ele não da o alerta e passa normalmente.
0
 
Mais de 100 postagens
Mais de 100 postagens
Mensagens: 166
Nome: Bruno Bandeira
Sexo: Masculino
Contato:

validação capcha

21-05-2014 11:21

Você adicionou o jquery.js no documento?
0
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 291

validação capcha

21-05-2014 11:51

sim !

veja um outro exemplo:

 <div style="width:500px; margin:0 auto; text-align:center; float:right;">             <p><?php echo "$a + $b" ?> = <input type='text'name='total'>             <input type='hidden'name='a'value='$a'><input type='hidden'name='b'value='$b'>             <?php              $a = $_POST["a"];              $b = $_POST["b"];              $total = $_POST["total"];                           if( $a + $b == $total )              {              echo "Campo Obrigatório";               }              else             { echo "<script type='text/javascript'>              alert('A soma dos números estão incorretas');              </script>";  }              ?>             </div>

exibe o alerta , porém se os dados do form estiverem corretos mas a soma estando errada, o alerta exibe, mas os dados sao enviados normalmente, o correto era validar as somas do capcha com o tado form.
0
 
Mais de 100 postagens
Mais de 100 postagens
Mensagens: 166
Nome: Bruno Bandeira
Sexo: Masculino
Contato:

validação capcha

21-05-2014 12:19


  $(document).ready(function(){         $("form").submit(function(){                         //declaração das variáveis                 var soma = '<?php echo $soma; ?>';                 // faz um alert aqui pra ver se está vindo o valor corrreto                 alert(soma);                 var campo = $('#captcha').val();                                 // Aqui faz tua verificação                 if(soma == campo) {                         alert("correto");                         return true;                 } else {                         alert("incorreto");                         return false;                 }                 }); });  

O mehor é tentar não colocar tags php com js e vice-versa... mas...
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17676
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

validação capcha

21-05-2014 13:23

Se vai fazer a validação do captcha via PHP, se baseia nesse script Script-de-captcha-para-soma-simples_1_5832.html

Já em jQuery, o exemplo do brunoban é o ideal.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 291

validação capcha

23-05-2014 12:14

pois é fiz tudo certinho so queria entender o porque que esse captcha não está funcionando,
a soma dos numeros certa ou não no captcha, o form não envia.

help pode me ajudar?

segue:

<?php session_start();     $h1            = 'Comercial';     $title         = 'Comercial';     $desc          = 'Fale conosco por email ou ligue para nossa empresa.';     $key           = '';     $urlPagina    = 'comercial.php';     $ind           = 'Comercial';          include('inc/head.php');     require_once('phpmailer/class.phpmailer.php');               $n1 = rand(1,10);     $n2 = rand(1,10);     $soma = $n1+$n2;     $_SESSION['captcha'] = $n1+$n2;      ?> <form action="" method="post">                 <?php                     /* Verifica qual é o sistema operacional do servidor para ajustar o cabeçalho de forma correta. Não alterar */                     if(PHP_OS == "Linux") $quebra_linha = "\n"; //Se for Linux                     elseif(PHP_OS == "WINNT") $quebra_linha = "\r\n"; // Se for Windows                     else die("Este script nao esta preparado para funcionar com o sistema operacional de seu servidor");                                          if(isset($_POST['submit'])){                                          $nome             = $_POST['nome'];                     $empresa         = $_POST['empresa'];                     $ddd               = $_POST['ddd'];                     $telefone          = $_POST['telefone'];                     $email             = $_POST['email'];                     $como_conheceu    = $_POST['como_conheceu'];                     $mensagem          = $_POST['mensagem'];                     $assunto         = "Contato via site $nomeSite";                                          $date             = date("d/m/Y H:i:s");               //função para pegar a data de envio do e-mail                     $ip                = $_SERVER['REMOTE_ADDR'];           //função para pegar o ip do usuário                     $navegador         = $_SERVER['HTTP_USER_AGENT'];       //função para pegar o navegador do visitante                     $verifica_email ="^[a-z A-Z 0-9 _ - .]+[@]+[a-z A-Z 0-9 _ - .]+[.]+[a-z A-Z 0-9 _ - .]^";                                                                                  $erros = "";                     if(empty($_POST['nome']))                     {                         $erros .= '<div id="Erro"><img src="imagens/erro.gif" />Insira seu NOME</div><br />';                     }                                          elseif(empty($_POST['ddd']))                     {                         $erros .= '<div id="Erro"><img src="imagens/erro.gif" />Insira o DDD do seu telefone</div><br />';                     }                                          elseif(empty($_POST['telefone']))                     {                         $erros .= '<div id="Erro"><img src="imagens/erro.gif" />Insira seu TELEFONE</div><br />';                     }                                          elseif(empty($_POST['email']))                     {                         $erros .= '<div id="Erro"><img src="imagens/erro.gif" />Insira um EMAIL</div><br />';                     }                                          elseif (!preg_match($verifica_email,$email))                     {                         $erros .= '<div id="Erro"><img src="imagens/erro.gif" />Insira um EMAIL válido</div><br />';                     }                                          elseif(empty($_POST['como_conheceu']))                     {                         $erros .= '<div id="Erro"><img src="imagens/erro.gif" />Selecione uma das opções em COMO NOS CONHECEU?</div><br />';                     }                                                                  elseif(empty($_POST['mensagem']))                     {                         $erros .= '<div id="Erro"><img src="imagens/erro.gif" />Escreva uma MENSAGEM</div><br />';                     }                                         [b] elseif(empty($_POST['captcha']))                     {                         $erros .= '<div id="Erro"><img src="imagens/erro.gif" />Digite o resultado da soma</div><br />';                     }                                          elseif($_SESSION['captcha'] != $_POST['captcha'])                     {                         $erros .= '<div id="Erro"><img src="imagens/erro.gif" />Código da soma ESTA ERRADO!</div><br />';                     }[/b]                                          if( empty($erros) ){                                                  // mensagem que vai para o destinatario                             $msg="                             <h2>Contato via site $nomeSite</h2>                             <div style=\"font: 12px calibri, arial, tahoma;\">                             <table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">                                 <tr>                                     <td valign=\"top\" style=\"width: 160px;\">                                         <strong>                                             Nome:<br />                                             Empresa:<br />                                             Telefone:<br />                                             Email:<br />                                             Como nos conheceu?:<br />                                             Mensagem:<br />                                         </strong>                                     </td>                                     <td valign=\"top\">                                         $nome<br />                                         $empresa<br />                                         ($ddd) $telefone<br />                                         $email<br />                                         $como_conheceu<br />                                     </td>                                 </tr>                             </table>                             $mensagem<br /><br />                             </div>                             <font color='#666666' size='1'><br /><br />Email enviado em: $date - IP: $ip <br /> (Enviado deslogado)</font><br />";                                                          /* Montando o cabeçalho da mensagem */                             $headers = "MIME-Version: 1.1".$quebra_linha;                             $headers .= "Content-type: text/html; charset=utf-8".$quebra_linha;                             // Perceba que a linha acima contém "text/html", sem essa linha, a mensagem não chegará formatada.                             $headers .= "From: \"$nomeSite\" <$emailRemetente>".$quebra_linha;                             $headers .= "Return-Path: \"$nomeSite\" <$emailRemetente>".$quebra_linha;                             // Esses dois "if's" abaixo são porque o Postfix obriga que se um cabeçalho for especificado, deverá haver um valor.                             // Se não houver um valor, o item não deverá ser especificado.                             if(strlen($comcopia) > 0) $headers .= "Cc: ".$comcopia.$quebra_linha;                                                          if(strlen($comcopiaoculta) > 0) $headers .= "Bcc: ".$comcopiaoculta.$quebra_linha;                             $headers .= "Reply-To: \"$nomeTratado\" <$email>".$quebra_linha;                             // Note que o e-mail do remetente será usado no campo Reply-To (Responder Para)                                                          /* Enviando a mensagem */                             $mail = mail($emailContato, $assunto, $msg, $headers, "-r". $emailContato);                                              // verifica se email foi enviado com sucesso                                          if($mail==TRUE)                     {                         echo '<div id="Sucesso"><img src="imagens/sucesso.png" />Email Enviado com Sucesso</div>';                         echo '<meta HTTP-EQUIV="Refresh" CONTENT="6;URL='.$url.'">' ;                     }                     else                     {                        echo '<div id="Erro"><img src="imagens/erro.gif" />Email Falhou</div>';                     }                                          }                     else                     {                         echo $erros;                     }                     }                 ?>                 <label>Nome*:</label>                 <input name="nome" value="<?php echo($nome);?>" type="text" size="35" /><br />                 <label>Empresa:</label>                 <input name="empresa" value="<?php echo($empresa);?>" type="text" size="30" /><br />                 <label>Telefone*:</label>                 <input name="ddd" value="<?php echo($ddd);?>" type="text" size="1" maxlength="2" onKeyUp="return autoTab(this, 2, event);" onKeyPress="mascara(this,somenteNumeros)" /> -                  <input name="telefone" value="<?php echo($telefone);?>" type="text" size="10" maxlength="10" onKeyUp="return autoTab(this, 10, event);" onKeyPress="mascara(this,telefoneValida)" /><br />                 <label>Email*:</label>                 <input name="email" value="<?php echo($email);?>" type="text" size="35" /><br />                 <label>Como nos conheceu*:</label>                 <select name="como_conheceu">                     <option value="">-- Selecione --</option>                     <option <? if ($como_conheceu== 'Busca Google') echo "selected"; ?> value="Busca Google">Busca Google</option>                     <option <? if ($como_conheceu== 'Busca Yahoo/Cadê') echo "selected"; ?> value="Busca Yahoo/Cadê">Busca Yahoo/Cadê</option>                     <option <? if ($como_conheceu== 'Busca Bing/MSN') echo "selected"; ?> value="Busca Bing/MSN">Busca Bing/MSN</option>                     <option <? if ($como_conheceu== 'Busca UOL') echo "selected"; ?> value="Busca UOL">Busca UOL</option>                     <option <? if ($como_conheceu== 'Busca Terra') echo "selected"; ?> value="Busca Terra">Busca Terra</option>                     <option <? if ($como_conheceu== 'Busca IG') echo "selected"; ?> value="Busca IG">Busca IG</option>                     <option <? if ($como_conheceu== 'Indicação de um amigo') echo "selected"; ?> value="Indicação de um amigo">Indicação de um amigo</option>                     <option <? if ($como_conheceu== 'Outros') echo "selected"; ?> value="Outros">Outros</option>                 </select>                 <br />                 <label>Mensagem*:</label>                 <textarea name="mensagem" cols="35" rows="8"><?=$mensagem;?></textarea><br />                 [b]<label>Soma *<?php echo "$n1 + $n2 = "; ?></label>                 <input type="text" name="captcha" id="captcha" maxlength="2" size="2" >                 <br class="clear" /><br />                 <label style="color: #fff;">.</label>                                  <input type="submit" name="submit" value="enviar mensagem"/><br /><br /> [/b]              <label style="color: #fff;">.</label>Os campos com (*) são obrigatórios.<br /><br /><br /><br />             </form>

help !!!! :sweat:; //Se for Linux
elseif(PHP_OS ==
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17676
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

validação capcha

23-05-2014 15:15

Está ocorrendo um erro de lógica no seu script.

Veja o que acontece, cada vez que acessa o seu documento, está sendo criado um valor novo para a SESSION. Isso já por alto faz com que o valor digitado fique diferente do valor da SESSION, porque após o submit, outro valor é criado.

Se você observar o exemplo desse link Script-de-captcha-para-soma-simples_1_5832.html vai ver que o valor da SESSION atual fica salvo no input hidden, e a verificação é feita por ele.

Baseado no exemplo do link acima, veja esse bloco

<?php session_start(); $v1 = rand(1,5); $v2 = rand(1,5); $_SESSION['soma'] = $v1+$v2; if(isset($_POST['submit'])=="submit") { extract($_POST); if(empty($soma)) { echo "Digite a soma correta"; } elseif($hidden!=$soma) { echo "O valor digitado não confere"; } else { echo "CORRETO"; } } ?>

Nesse bloco $hidden tem que estar no formulário escondido.

Se você não quer expor o valor do captcha dentro do formulário, se baseia nesse exemplo

<?php session_start(); $v1 = rand(1,5); $v2 = rand(1,5); if(isset($_POST['submit'])=="submit") { extract($_POST); if($_POST['soma']=="") { echo "Digite a soma correta"; } elseif($_POST['soma']!=$_SESSION['soma']) { echo "O valor digitado não confere"; } else { echo "CORRETO"; } } $_SESSION['soma'] = $v1+$v2; ?>


<?php echo $_SESSION['soma']; // MOSTRADO PARA TESTE ?> <form action="teste.php" method="post"> Soma: <?php echo "$v1+$v2="; ?> <input type="text" name="soma" value="" size="3"> <input type="submit" name="submit"> </form>

Nesse exemplo, a SESSION é criada após o envio dos dados, abaixo do bloco do SUBMIT. Assim o valor não é mudado antes da verificação.
0
A melhor hospedagem para o seu site HostGator!

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado