Lo mejore todabia um poco pero todabia sigue sin imprimir nada cuando le doy a enviar sin haber escrito nada ...
Código PHP:
Ver original<?php
if($_POST["oculto"]) {
$errores_formulario = validar_formulario();
if (strlen($errores_formulario[0]) > 0 || strlen($errores_formulario[1]) > 0 || strlen($errores_formulario[2]) > 0 || strlen($errores_formulario[3]) > 0|| strlen($errores_formulario[4]) > 0 || strlen($errores_formulario[5]) > 0) { mostrar_formulario($errores_formulario);
}else {
procesar_formulario();
}
}else {
mostrar_formulario();
}
//Funciones
//La funcion de mostrar el formulario y si hay errores tambien
function mostrar_formulario($errores = "") {
//Si hay errores imprimirlos
print "Porfavor corrige los siguientes errores: <ul><li>";
print implode("</li><li>", $errores); print "</li></ul>";
}
print '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
</head>
<body>
<form id="form1" name="form1" method="post" action="Prueba_complicada.php">
<p>
<label for="nombre"></label>
Nombre*:
<input type="text" name="nombre" id="nombre" />
</p>
<p>
<label for="email"></label>
Email*:
<input type="text" name="email" id="email" />
</p>
<p>
<label for="mensaje"></label>
Mensaje*:
<input type="text" name="mensaje" id="mensaje" />
</p>
<p>
<label for="telefono"></label>
Telefono:
<input type="text" name="telefono" id="telefono" />
<input name="oculto" type="hidden" id="oculto" value="1" />
</p>
<p>
<input type="submit" name="button" id="button" value="Enviar" />
</p>
</form>
</body>
</html>
';
}
//La funcion de validar el formulario
function validar_formulario() {
//Empezar con un array vacio para añadir le luego si hay errores
//Añadir mensaje de error si faltan campos para escribir
if(!empty($_POST["nombre"]) && isset($_POST["nombre"]) && !empty($_POST["email"]) && isset($_POST["email"]) && !empty($_POST["mensaje"]) && isset($_POST["mensaje"])) { $erroritos[0] = "Rellena los campos obligatorio! El telefono no se entre ellos!";
}
elseif(strlen($_POST["nombre"]) > 0 && strlen($_POST["email"]) > 0 && strlen($_POST["mensaje"]) > 0) {
//Si el telefono esta vacio continuara validando los demas campos porque no es obligatorio.
//Validar el telefono
if(!empty($_POST["telefono"]) && isset($_POST["telefono"])) { if(strlen($_POST["nombre"]) < 2) { $erroritos[1] = "Nombre demasiado corto!";
}
//Validar el email con el patron para emails.
if(!preg_match("/^[^\s]+@([-a-z0-9]+\.)+[a-z]{2,}$/")) { $erroritos[2] = "Email no valido!";
}
//Validar el mensaje si es menos de 10 lineas.
if(strlen($_POST["mensaje"]) < 10) { $erroritos[3] = "El mensaje no puede ser menos de 10 caracteres!";
}
//Validar el mensaje si es mas de 600 lineas.
if(strlen($_POST["mensaje"]) > 600) { $erroritos[4] = "El mensaje no puede ser mas de 600 lineas!";
}
//Si el telefono tiene escrito validara el telefono con los demas campos.
} else {
$erroritos[5] = "Telefono no valido, aunque no es obligatorio.";
}
if(strlen($_POST["nombre"]) < 2) { $erroritos[1] = "Nombre demasiado corto!";
}
//Validar el email con el patron para emails.
if(!preg_match("/^[^\s]+@([-a-z0-9]+\.)+[a-z]{2,}$/")) { $erroritos[2] = "Email no valido!";
}
//Validar el mensaje si es menos de 10 lineas.
if(strlen($_POST["mensaje"]) < 10) { $erroritos[3] = "El mensaje no puede ser menos de 10 caracteres!";
}
//Validar el mensaje si es mas de 600 lineas.
if(strlen($_POST["mensaje"]) > 600) { $erroritos[4] = "El mensaje no puede ser mas de 600 lineas!";
}
}
}
return $erroritos;
}
//Funcion para decir hola
function procesar_formulario() {
if($_POST["nombre"] && $_POST["email"] && $_POST["telefono"] && $_POST["mensaje"]) {
print "Hola " . $_POST["nombre"] . " con email: " . $_POST["email"] . " con telefono: " . $_POST["telefono"] . " ,creo el mensaje: <br />" . $_POST["mensaje"] ;
print "Gracias :)";
} elseif($_POST["nombre"] && $_POST["email"] && $_POST["mensaje"]) {
print "Hola " . $_POST["nombre"] . " con email: " . $_POST["email"] . " ,creo el mensaje: <br />" . $_POST["mensaje"] ;
print "Gracias :)";
}
}
?>