Foros del Web » Programando para Internet » Jquery »

jquery-validate y Validacion Php

Estas en el tema de jquery-validate y Validacion Php en el foro de Jquery en Foros del Web. Estimados junto con el agrado de presentarme, queria exponer el siguiente problema a ver si alguien me echa una manito, resulta que tengo un formulario ...
  #1 (permalink)  
Antiguo 07/07/2014, 13:01
 
Fecha de Ingreso: noviembre-2010
Mensajes: 131
Antigüedad: 14 años
Puntos: 1
Pregunta jquery-validate y Validacion Php

Estimados junto con el agrado de presentarme, queria exponer el siguiente problema a ver si alguien me echa una manito, resulta que tengo un formulario (formulario.html), el cual valido y proceso mediante jquery-validate, y proceso en ajax (llama a un archivo .php que envia el formulario a mi email), mi consulta es:
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:
<?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
	
	
	
?>
ajax-jquery
Código:
$(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
formulario.html
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> 

Etiquetas: ajax, formulario, html, php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:13.