Ver Mensaje Individual
  #7 (permalink)  
Antiguo 13/06/2012, 12:01
Avatar de SnakeCode
SnakeCode
 
Fecha de Ingreso: mayo-2012
Ubicación: Lima - Perú
Mensajes: 23
Antigüedad: 12 años
Puntos: 1
Respuesta: Como relacionar un captcha y validaciones javascript?

Cita:
Iniciado por maycolalvarez Ver Mensaje
No digo que no use AJAX, lo puedes usar, lo que NO debes hacer es validar el captcha primero y enviar la data después, es decir que puedes hacer todas las validación locales en javascript que quieras y enviar los datos al servidor, allí es donde debes de validar el captcha, no en un paso previo, además de volver a validar los datos en php, es redundante pero más seguro.
Hola maycolalvarez, tus respuestas también me sirvieron mucho, pero mi duda viene cuando quiero enviar un un mensaje mediante el método ajax de jquery, como implemento la solución:

Este es mi codigo javascript (jquery):
Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.        
  3.         /************************************* CALENDARIO JQUERY UI ******************************************/
  4.         $("#Fecha").datepicker({
  5.             showOn: 'both',
  6.             buttonImage: 'imagenes/calendario.gif',
  7.             buttonImageOnly: true
  8.         });
  9.         /*****************************************************************************************************************/
  10.        
  11.         /************************************* VALIDACION DE FORMULARIOS ******************************************/
  12.         var correo = /^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$/;
  13.        
  14.         $("#Submit").click(function(){
  15.        
  16.             $(".error").remove();
  17.  
  18.             if($("#Nombre").val() == ""){
  19.                 $("#Nombre").focus().after('<span class="error">Ingrese su nombre</span>');
  20.                 return false;  
  21.             }else if($("#Pais").val() == ""){
  22.                 $("#Pais").focus().after('<span class="error">Ingrese su pais</span>');
  23.                 return false;
  24.             }else if($("#Correo").val() == "" || !correo.test($("#Correo").val())){
  25.                 $("#Correo").focus().after('<span class="error">Ingrese email valido</span>'); 
  26.                 return false;
  27.             }else if($("#captcha").val() == ""){
  28.                 $("#captcha").focus().after('<br /><span class="error">Ingrese los caracteres de la imagen</span>');
  29.                 return false;
  30.             }else{
  31.                 var datos = "Nombre=" + $("#Nombre").val() +
  32.                         "&Pais=" + $("#Pais").val() +
  33.                         "&Telefono=" + $("#Telefono").val() +
  34.                         "&Correo=" + $("#Correo").val() +
  35.                         "&Sexo=" + $("input[name='Sexo']:checked").val() +
  36.                         "&Edad=" + $("#Edad").val() +
  37.                         "&Permanencia=" + $("#Permanencia").val() +
  38.                         "&Fecha=" + $("#Fecha").val() +
  39.                         "&Encontro=" + $("#Encontro").val() +
  40.                         "&Comentarios=" + $("#Comentarios").val() +
  41.                         "&url=" + $("#url").val();
  42.                        
  43.                 $.ajax({
  44.                     type    : 'POST',
  45.                     url     : 'captcha/c-envio-solicitud-2.php',
  46.                     data    : datos,
  47.                     success : function(){
  48.                                     url='c-gracias-solicitud.htm';
  49.                                     window.location = url; 
  50.                               },
  51.                     error   : function(){
  52.                                     alert("No se pudo enviar el mensaje. ¡Intentelo nuavamente!");
  53.                               }
  54.                 });
  55.                 return false;
  56.             }
  57.         });
  58.        
  59.         $("#Nombre, #Pais, #captcha").keyup(function(){
  60.             if( $(this).val() != "" ){
  61.                 $(".error").fadeOut();
  62.                 return false;
  63.             }
  64.         });
  65.        
  66.         $("#Correo").keyup(function(){
  67.             if( $(this).val() != "" && correo.test($(this).val())){
  68.                 $(".error").fadeOut();
  69.                 return false;
  70.             }
  71.         });
  72.         /*****************************************************************************************************************/
  73.        
  74.         /************************************ REFRESCAR CAPTCHA **************************************************************/
  75.         $('img#refresh').click(function() {  
  76.               change_captcha();
  77.         });
  78.        
  79.         function change_captcha(){
  80.           document.getElementById('im_captcha').src="captcha/get_captcha.php?rnd=" + Math.random();
  81.         }
  82.         /********************************************************************************************************************/
  83. });

Este es el codigo php (aca es donde tengo q hacer la validacion del captcha):
Código PHP:
<?php
    session_start
();
    include(
"geoiploc.php");
    
$direccion_ip $_SERVER['REMOTE_ADDR']; 
    
$ipcliente.=" ".$direccion_ip;
    
$paiscliente=getCountryFromIP($direccion_ip" NamE ");
    
    
#correos destino===================================================================================
        
$email_principal     '[email protected]';
        
$email_secundarios     '[email protected]';
    
#==================================================================================================
    
    
$eol="\r\n";
    
#Cuerpo del mensaje===============================================================================
        
$message_send "Mensaje desde la página<br /><br />      
        IP: "
.utf8_decode($ipcliente)." <br />
        País: "
.utf8_decode($paiscliente)." <br />
        Nombre: "
.utf8_decode($_POST['Nombre'])." <br />
        País: "
.utf8_decode($_POST['Pais'])." <br />
        Teléfono: "
.utf8_decode($_POST['Telefono'])." <br />    
        E-mail: "
.utf8_decode($_POST['Correo'])." <br />
        Sexo: "
.utf8_decode($_POST['Sexo'])." <br />
        Edad: "
.utf8_decode($_POST['Edad'])." <br />
        Permanencia: "
.utf8_decode($_POST['Permanencia'])." <br />
        Fecha: "
.utf8_decode($_POST['Fecha'])." <br />
        Donde nos encontro: "
.utf8_decode($_POST['Encontro'])." <br />
        Comentarios: "
.utf8_decode($_POST['Comentarios'])." <br />
        Url: "
.utf8_decode($_POST['url'])." <br />";
    
#================================================================================================
    
    #Cabeceras para evitar el SPAM===================================================================
        
$headers .= 'From: '.utf8_decode($_POST['Nombre']).'<'.utf8_decode($_POST['Correo']).'>'.$eol;
        
$headers .= "CC: ".$email_secundarios.$eol;
        
$headers .= "Reply-To: ".$mail."".$eol;
        
$headers .= "Return-Path: ".$mail."".$eol;
        
$headers .= "Message-ID: <".time()."-".$para.">".$eol;
        
$headers .= "X-Mailer: PHP v".phpversion().$eol;
        
$headers .= "MIME-Version: 1.0".$eol;
        
$headers .= "Content-type: text/html; charset=iso-8859-1;".$eol.$eol;
    
#================================================================================================
    
    #Enviar mensaje===================================================================================
        
mail($email_principal'INFO-C VIVA' $message_send$headers)
    
#=================================================================================================
?>
Como tendría que hacer para que cuando no este bien escrito el captcha, mande un mensaje al formulario o si esta bien llege a enviar, he estado intentandolo pero no funciona. Gracias de antemano!!

Saludos