Ver Mensaje Individual
  #10 (permalink)  
Antiguo 06/10/2011, 09:23
cslbcn
 
Fecha de Ingreso: marzo-2008
Mensajes: 383
Antigüedad: 16 años, 1 mes
Puntos: 5
Respuesta: Campos vacios

Hola. La explicación sobre porque no quiero validar en JavaScript era un resumen.

Evidentemente se puede validar en Javascript y en PHP a la vez, aunque vuelvo a decir que NUNCA lo haría en javascript. En todo caso haría la validación en php mediante una llamada AJAX desde JS (así es más agradable para el usuario), pero la propia validacion de campos nunca en JS. Además que por la seguridad, siempre es mejor que el usuario sepa lo menos posible del codigo de la web.

El formulario lo uso para enviar emails. Lo he hecho como dice GatorV, pero sin el header y un action= a la propia página.


Código PHP:
Ver original
  1. <?php
  2.     //Enviar mail
  3.     include('send.php');
  4.    
  5.     //Controlar doble Post
  6.     require("postClass.php");
  7.     $thisPost = new Post_Block;
  8.  
  9.         //Evitar caracteres extraños en la cadena
  10.     function limpiarCadena($cadena){
  11.         $cadena = preg_replace("/¡|\^|'|:|@|#|\$|%|&|\"|~|\+|\*|\/|\||\\|\[|\]|\(|\)|\{|\}/","",$cadena);
  12.         $cadena = preg_replace("/-{2,}/","-",$cadena);
  13.         $cadena = preg_replace("/^-|-+$/","",$cadena);
  14.         return $cadena;
  15.     }
  16.  
  17.         //sintaxis email
  18.     function limpiarEmail($email){
  19.         $mail_correcto = 0;
  20.         //compruebo unas cosas primeras
  21.         if ((strlen($email) >= 6) && (substr_count($email,"@") == 1) && (substr($email,0,1) != "@") && (substr($email,strlen($email)-1,1) != "@")){
  22.             if ((!strstr($email,"'")) && (!strstr($email,"\"")) && (!strstr($email,"\\")) && (!strstr($email,"\$")) && (!strstr($email," "))) {
  23.             //miro si tiene caracter .
  24.                 if (substr_count($email,".")>= 1){
  25.                 //obtengo la terminacion del dominio
  26.                     $term_dom = substr(strrchr ($email, '.'),1);
  27.                     //compruebo que la terminación del dominio sea correcta
  28.                     if (strlen($term_dom)>1 && strlen($term_dom)<5 && (!strstr($term_dom,"@")) ){
  29.                     //compruebo que lo de antes del dominio sea correcto
  30.                         $antes_dom = substr($email,0,strlen($email) - strlen($term_dom) - 1);
  31.                         $caracter_ult = substr($antes_dom,strlen($antes_dom)-1,1);
  32.                         if ($caracter_ult != "@" && $caracter_ult != "."){
  33.                             $mail_correcto = 1;
  34.                         }
  35.                     }
  36.                 }
  37.             }
  38.         }
  39.         if ($mail_correcto)         return 1;
  40.         else                        return 0;
  41.     }
  42.    
  43.  
  44.  
  45.     if(isset($_POST['postID']))
  46.    
  47.     if ($thisPost->postBlock($_POST['postID'])) {
  48.        
  49.        
  50.         if( (isset($_POST["mensaje"])) && (isset($_POST["email"])) )
  51.             //Si el campo Nombre está activo y tiene contenido....                     
  52.                
  53.             if( ($_POST["email"] != '') && (limpiarEmail($_POST["email"])) )
  54.                
  55.                 if( ($_POST["mensaje"] != '') ){
  56.                    
  57.                     $mail = new enviarMail();            
  58.                     $rslt = $mail->sendMsg($_POST["email"],$_POST["name"],$_POST["topic"],$_POST["mensaje"],$_SESSION["lang"]);
  59.                        
  60.                     if ($rslt)  $rtdoMensaje = "Mensaje enviado";
  61.                     else        $rtdoMensaje = "Error al enviar el mensaje. Intentalo de nuevo.";
  62.                 }
  63.                 else
  64.                    
  65.                     $controlMensaje = "<span style='color:red'>&nbsp;(Campo mensaje requerido)</span>";    
  66.             else
  67.                
  68.                 $controlMail = "<span style='color:red'>&nbsp;(Campo mail requerido)</span>";              
  69.                    
  70.     }
  71.  
  72.        
  73. ?>



Código HTML:
Ver original
  1. <form method="post" action="?x=ctt">
  2.        
  3.        
  4.         <!-- Textarea -->        
  5.         <?php if(isset($controlMensaje)) echo $controlMensaje; ?>
  6.         <textarea name="mensaje" style="height:225px; width:480px;" ><?php if(isset($_POST["mensaje"])) echo $_POST["mensaje"] ?></textarea>
  7.  
  8.        
  9.         <!-- Textbox Email -->                
  10.         <?php if(isset($controlMail)) echo $controlMail; ?>        
  11.           <input               
  12.                type="text"
  13.                name="email"
  14.                value="<?php if(isset($_POST["email"])) echo $_POST["email"] ?>"              
  15.           />  
  16.              
  17.         <!-- Boton Enviar -->  
  18.          <input type="submit" style="width:auto; cursor:pointer" value="Enviar"><?php if(isset($rtdoMensaje)) echo $rtdoMensaje; ?>
  19.  
  20.            
  21.         <?php $thisPost->startPost(); ?>
  22.         </form>