1.-El formulario en html, tiene un captcha, el script php me valida todo bien (campos vacios, si el catcha coincide envia si no, no envia), pero en este php quiero mostrar el mensaje de validaciones (campos vacios, error de formato,etc) en un div del formulario.
2.- Si uso ajax, funciona la validacion perfecta de jquery-validate, me valida el captcha del procesa.php, y hace lo que quiero, pero que pasa si desactivo javascript? adios validacion jquery-validate, y deberian entrar las validaciones del procesa.php, en este punto, debo llamar en el action del form al archivo procesa.php?
3.- como puedo hacer para usar las 2 validaciones, cosa que si desctivan javascript y no funcione la rutina ajax, entre a trabajar el php, mostrandome los mensajes en el mismo formulario?
Gracias desde ya a todos por su tiempo, les dejo lo que tengo hasta ahora:
.php que procesa el formulario y envia a email
Código:
ajax-jquery<?php //Iniciamos Sesion session_start(); //Comprobamos si el formulario reamente esta trabajando via POST if(isset($_POST["Enviar"])) { /*var_dump($_POST);//muestra en pantalla los datos que se estan enviando (solo para debugging)*/ //Recogemos las variables desde el formulario $nombre= $_POST["nombre"]; $email= $_POST["email"]; $comentario= $_POST["comentario"]; $captcha=sha1($_POST["captcha"]); /* $cookie_captcha= $_COOKIE["cookie"];*/ //Validacion de Campos (no vacios y campos correctos) if(empty($_POST["nombre"])){ echo "debe ingresar nombre"; }else if (empty($_POST["email"])){ echo "Email vacio"; }else if (empty($_POST["comentario"])){ echo "comentario vacio"; }else if (empty($_POST["captcha"])){ echo "captcha vacio"; }else if ($_SESSION["codigo_seguridad"] != $_POST["captcha"]){ //Comparamos si el codigo ingresado en el campo captcha es diferente al de la sesion echo "EL CAPTCHA NO ES VALIDOOOO"; //no hay coincidencia }else{ //ACCIONES A SEGUIR SI SE PASA LAS VALIDACIONES echo "PASO LA VALIDACION "; /*enviaEmail();*/ } }//if validaciones function enviaEmail(){ //Recogemos las Variables $nombre= $_POST['nombre']; $email= $_POST['email']; $comentario= $_POST['comentario']; //Definimos Email de Destino $destinatario= "[email protected]"; //Cabeceras para Evitar que el Correo sea Considerado Spam $headers = "From: $nombre <$email>\r\n"; $headers .= "X-Mailer: PHP5\n"; $headers .= 'MIME-Version: 1.0'; $header .= 'Content-type: text/html; charset=iso-8859-1'; //Preparacion del Email $asunto= "Consulta desde la pagina"; $cuerpo="Nombre:".$nombre."</br>"; $cuerpo .="Correo Electronico:".$email."</br>"; $cuerpo .="Comentario o Consulta:".$comentario."</br>"; //Validacion de Campos Vacios Antes de Enviar //Envio del Mensaje if($nombre != '' &&$email != '' &&$comentario != '' ){ //si pasa la validacion de que no falte ningun campo, envia el email mail($destinatario,$asunto,$cuerpo,$headers); }else { echo "<script>alert 'fallo, faltan campos' </script>"; } }//Fin Funcion enviaEmail ?>
Código:
formulario.html$(document).ready(function () { //Capturamos el evento Clicl del Boton de envio del Form $("#Enviar").click(function(){ //Validacion $("#formulario-pie").validate({ rules: { nombre: { required: true, minlength: 2}, email: { required:true, email: true}, comentario: { minlength: 2, maxlength: 50}, captcha: { required: true}, }, messages: { nombre: "Debe introducir su nombre.", email : "Debe introducir un email válido.", comentario : "Debe Introducir su Consulta o Comentario", captcha : "Campo obligatorio", }, }); //Si esta todo correcto procedemos al envio if ($("#formulario-pie").valid()) { // JQuery's awesome submit handler. submitHandler(function(form) { // Traemos los datos de los campos del formulario var informacion=$("#formfooter").serialize(); // LLamada a la funcion para enviar con AJAX $.ajax({ type: 'POST', url: 'formulario.php', data: informacion, success:function(data) { // Mostramos los resultados del script PHP en el div de Resultados $("#resultado").html(data); return false; }, error:function(){ alert('Whoops! This didn\'t work. Please contact us.') }; }); return false; }); //handdler })//boton });//funcion principal
Código HTML:
<form method="post" name="formulario-pie" id="formulario-pie"> <!-- action="formulario.php"--> <label for="nombre">Nombre:</label> <input type="text" name="nombre" /><br> <label for="email">Email:</label> <input type="text" name="email"/><br> <label for="comentario">Comentario</label> <textarea name="comentario" rows="2"></textarea><br> <label for="captcha">Codigo de Seguridad</label> <input type="tel" name="captcha"/> <img id="imagen" src="inc/captchapropio.php"/> <div class="" id="error_captcha"></div><br> <input type="submit" name="Enviar" id="Enviar" value="Enviar" /> </form> <script src="js/vendor/jquery-1.11.0.min.js"></script> <script src="js/vendor/bootstrap.js"></script> <script src="js/vendor/jquery.validate.js"></script> <script src="prueba.js"></script>