Ver Mensaje Individual
  #11 (permalink)  
Antiguo 18/05/2012, 13:44
Avatar de patilanz
patilanz
 
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 12 años, 10 meses
Puntos: 29
Respuesta: Un error grave

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
  1. <?php
  2. if($_POST["oculto"]) {
  3.     $errores_formulario = validar_formulario();
  4.     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) {
  5.         mostrar_formulario($errores_formulario);
  6.     }else {
  7.         procesar_formulario();
  8.     }
  9. }else {
  10. mostrar_formulario();
  11. }
  12.  
  13.  
  14. //Funciones
  15. //La funcion de mostrar el formulario y si hay errores tambien
  16. function mostrar_formulario($errores = "") {
  17. //Si hay errores imprimirlos
  18. if(strlen($errores) > 0) {
  19.     print "Porfavor corrige los siguientes errores: <ul><li>";
  20.     print implode("</li><li>", $errores);
  21.     print "</li></ul>";
  22. }
  23. print '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  24. <html xmlns="http://www.w3.org/1999/xhtml">
  25. <head>
  26. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  27. <title>Documento sin título</title>
  28. </head>
  29.  
  30. <body>
  31. <form id="form1" name="form1" method="post" action="Prueba_complicada.php">
  32.  <p>
  33.    <label for="nombre"></label>
  34.     Nombre*:
  35.     <input type="text" name="nombre" id="nombre" />
  36.  </p>
  37.  <p>
  38.    <label for="email"></label>
  39.    Email*:
  40.    <input type="text" name="email" id="email" />
  41.  </p>
  42.  <p>
  43.    <label for="mensaje"></label>
  44.    Mensaje*:
  45.    <input type="text" name="mensaje" id="mensaje" />
  46.  </p>
  47.  <p>
  48.    <label for="telefono"></label>
  49.    Telefono:
  50.    <input type="text" name="telefono" id="telefono" />
  51.    <input name="oculto" type="hidden" id="oculto" value="1" />
  52.  </p>
  53.  <p>
  54.    <input type="submit" name="button" id="button" value="Enviar" />
  55.  </p>
  56. </form>
  57. </body>
  58. </html>
  59. ';
  60. }
  61.  
  62.  
  63.  
  64. //La funcion de validar el formulario
  65. function validar_formulario() {
  66.     //Empezar con un array vacio para añadir le luego si hay errores
  67.     $erroritos = array();
  68.    
  69.     //Añadir mensaje de error si faltan  campos para escribir
  70.     if(!empty($_POST["nombre"]) && isset($_POST["nombre"]) &&
  71.         !empty($_POST["email"]) && isset($_POST["email"]) &&
  72.         !empty($_POST["mensaje"]) && isset($_POST["mensaje"])) {
  73.             $erroritos[0] = "Rellena los campos obligatorio! El telefono no se entre ellos!";
  74.         }
  75.             elseif(strlen($_POST["nombre"]) > 0  &&
  76.                 strlen($_POST["email"]) > 0 &&
  77.                 strlen($_POST["mensaje"]) > 0) {
  78.                    
  79.         //Si el telefono esta vacio continuara validando los demas campos porque no es obligatorio.
  80.         //Validar el telefono
  81.         if(!empty($_POST["telefono"]) && isset($_POST["telefono"])) {
  82.             if(strlen($_POST["nombre"]) < 2) {
  83.                 $erroritos[1] = "Nombre demasiado corto!";
  84.             }
  85.         //Validar el email con el patron para emails.
  86.         if(!preg_match("/^[^\s]+@([-a-z0-9]+\.)+[a-z]{2,}$/")) {
  87.             $erroritos[2] = "Email no valido!";
  88.         }
  89.         //Validar el mensaje si es menos de 10 lineas.
  90.         if(strlen($_POST["mensaje"]) < 10) {
  91.             $erroritos[3] = "El mensaje no puede ser menos de 10 caracteres!";
  92.         }
  93.         //Validar el mensaje si es mas de 600 lineas.
  94.         if(strlen($_POST["mensaje"]) > 600) {
  95.             $erroritos[4] = "El mensaje no puede ser mas de 600 lineas!";
  96.         }
  97.         //Si el telefono tiene escrito validara el telefono con los demas campos.
  98.            
  99.         } else {
  100.             if(preg_match("@^\d{9}$@", $_POST["telefono"])) {
  101.                 $erroritos[5] = "Telefono no valido, aunque no es obligatorio.";
  102.                
  103.             }
  104.                 if(strlen($_POST["nombre"]) < 2) {
  105.                 $erroritos[1] = "Nombre demasiado corto!";
  106.             }
  107.         //Validar el email con el patron para emails.
  108.         if(!preg_match("/^[^\s]+@([-a-z0-9]+\.)+[a-z]{2,}$/")) {
  109.             $erroritos[2] = "Email no valido!";
  110.         }
  111.         //Validar el mensaje si es menos de 10 lineas.
  112.         if(strlen($_POST["mensaje"]) < 10) {
  113.             $erroritos[3] = "El mensaje no puede ser menos de 10 caracteres!";
  114.         }
  115.         //Validar el mensaje si es mas de 600 lineas.
  116.         if(strlen($_POST["mensaje"]) > 600) {
  117.             $erroritos[4] = "El mensaje no puede ser mas de 600 lineas!";
  118.         }
  119.            
  120.         }
  121.            
  122.            
  123.         }
  124.        
  125.        
  126.     return $erroritos;
  127. }
  128. //Funcion para decir hola
  129. function procesar_formulario() {
  130. if($_POST["nombre"] && $_POST["email"] && $_POST["telefono"] && $_POST["mensaje"]) {
  131.     print "Hola " . $_POST["nombre"] . " con email: " . $_POST["email"] . " con telefono: " . $_POST["telefono"] . " ,creo el mensaje: <br />" . $_POST["mensaje"] ;
  132.     print "Gracias :)";
  133.     } elseif($_POST["nombre"] && $_POST["email"] && $_POST["mensaje"]) {
  134.         print "Hola " . $_POST["nombre"] . " con email: " . $_POST["email"] .  " ,creo el mensaje: <br />" . $_POST["mensaje"] ;
  135.         print "Gracias :)";
  136.     }
  137. }
  138.  
  139.  
  140. ?>