Ver Mensaje Individual
  #3 (permalink)  
Antiguo 03/09/2014, 17:48
luchi2
 
Fecha de Ingreso: agosto-2014
Mensajes: 31
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: Validación de formularios

Hola.
He puesto el echo "<noscript>" por que ésta función sólo se ejecutaría si el navegador del usuario no tuviera Javascript activado, en el caso de tenerlo activado se valida con Javascript y lo hace bien, el problema es cuando lo debe validar con PHP, he cambiado cosas del código, aunque sigue dando el mismo problema e incluso probé con quitarle la función y que éso sólo se ejecutara entre las etiquetas "<noscript>", también he probado poniendo esas etiquetas en html y tampoco, aquí mi nuevo código:
Código PHP:
Ver original
  1. <?php
  2.                     /*Se recogen los datos del formulario y se comprueba que no tengan espacios en blanco ni fallos de seguridad en mysql y xss*/
  3.                     if(isset($_POST['envio'])){
  4.                         //var_dump($validacion);
  5.                         $usuario=trim(htmlentities(mysql_real_escape_string($_POST['usuario'])));
  6.                         $contrasena=trim(htmlentities(mysql_real_escape_string($_POST["contrasena"])));
  7.                         $email=trim(htmlentities(mysql_real_escape_string($_POST["email"])));
  8.                         $nombre=trim(htmlentities(mysql_real_escape_string($_POST["nombre"])));
  9.                         $apellidos=trim(htmlentities(mysql_real_escape_string($_POST["apellidos"])));
  10.                         $direccion=trim(htmlentities(mysql_real_escape_string($_POST["direccion"])));
  11.                         $provincia=trim(htmlentities(mysql_real_escape_string($_POST["provincia"])));
  12.                         $poblacion=trim(htmlentities(mysql_real_escape_string($_POST["poblacion"])));
  13.                         $cp=trim(htmlentities(mysql_real_escape_string($_POST["cp"])));
  14.                         $telefono=trim(htmlentities(mysql_real_escape_string($_POST["telefono"])));
  15.                         //var_dump($telefono);
  16.  
  17.                         //Declaramos un array que recoja los errores
  18.                         $recoger_errores=array();
  19.                         $validacion=true;
  20.                        
  21.  
  22.                        
  23.                         /*Normalmente comprobamos mediante Javascript que se han introducido los datos correctos, pero si el usuario no tiene activado Javascript, lo comprobaremos mediante PHP*/
  24.                         echo "<noscript>";
  25.                         //Ejecutamos la función validar con sus parámetros
  26.                         validar($usuario, $contrasena, $email, $nombre, $apellidos, $direccion, $poblacion, $cp, $telefono);
  27.                        
  28.                         echo "</noscript>";
  29.                        
  30.                         function validar($usuario, $contrasena, $email, $nombre, $apellidos, $direccion, $poblacion, $cp, $telefono){
  31.                             /*Si algún usuario está en blanco, se añade el error al array*/
  32.                             var_dump($validacion);
  33.                            
  34.  
  35.                             if($usuario=="" || $contrasena=="" || $email=="" || $nombre=="" || $apellidos="" || $direccion=="" || $poblacion="" || $cp="" || $telefono=""){
  36.                                 /*echo "Debes completar todos los campos";
  37.                                 return false;*/
  38.                                 //$recoger_errores[]="Debes completar todos los campos";
  39.                                 array_push($recoger_errores, "Debes completar todos los campos");
  40.                                 $validacion=false;
  41.                             }
  42.  
  43.                             /*Esto mide la longitud de los números*/
  44.                             if(strlen($cp)!=5){
  45.                                 //$recoger_errores[]="El código postal deben ser 5 caracteres";
  46.                                 array_push($recoger_errores, "El código postal deben ser 5 caracteres");
  47.                                 $validacion=false;
  48.                             }
  49.  
  50.                             if(strlen($telefono)!=9){
  51.                                 //$recoger_errores[]="El teléfono deben ser 9 caracteres";
  52.                                 array_push($recoger_errores, "El teléfono deben ser 9 caracteres");
  53.                                 $validacion=false;
  54.                             }
  55.  
  56.                             /*Esto se encarga de ver si se trata de un número entero*/
  57.                             if(filter_var($cp, FILTER_VALIDATE_INT)===false){
  58.                                 //$recoger_errores[]="El codigo postal debe ser un número";
  59.                                 array_push($recoger_errores, "El codigo postal debe ser un número");
  60.                                 $validacion=false;
  61.                             }
  62.  
  63.                             if(filter_var($telefono, FILTER_VALIDATE_INT)===false){
  64.                                 //$recoger_errores[]="El teléfono debe ser un número";
  65.                                 array_push($recoger_errores, "El teléfono debe ser un número");
  66.                                 $validacion=false;
  67.                             }
  68.  
  69.                             foreach ($recoger_errores as $key => $value) {
  70.                                 echo $value;
  71.                             }
  72.                         }
  73.  
  74.                         //Nos conectamos a la base de datos*/
  75.                         $conexion=mysql_connect("localhost", "admin", "admin");
  76.                         mysql_select_db("angra");
  77.  
  78.                         /*Comprobamos que el usuario y el email no existen ya*/
  79.                         $usuario_c=mysql_query("SELECT `cliente` FROM `clientes` WHERE `cliente`='$usuario'");
  80.                         $num_usuario=mysql_num_rows($usuario_c);
  81.                         if($num_usuario!=0){
  82.                             /*Si el usuario ya existe, se lo decimos, resaltando el texto en rojo con la ayuda de Javascrip*/
  83.                             echo "<script type='text/javascript'>
  84.                                     usuario();
  85.                                     </script>";
  86.                         }
  87.                         /*Con el email, lo mismo*/
  88.                         $email_c=mysql_query("SELECT `email` FROM `clientes` WHERE `email`='$email'");
  89.                         $num_email=mysql_num_rows($email_c);
  90.                         if($num_email!=0){
  91.                             echo "<script type='text/javascript'>
  92.                                     email();
  93.                                     </script>";
  94.                         }
  95.                         /*Sólo si el usuario o el email no existen ya en la BBDD y los campos introducidos no son está vacíos se produce la dirección y el registro del usuario*/
  96.                         if($num_usuario==0 && $num_email==0 && $usuario!=null && $contrasena!=null && $email!=null && $validacion==true){
  97.                             mysql_query("INSERT INTO `clientes`(`cliente`, `contrasena`, `email`, `nombre`, `apellidos`, `direccion completa`, `provincia`, `poblacion`, `cp`, `telefono contacto`) VALUES ('$usuario','$contrasena','$email','$nombre','$apellidos','$direccion','$provincia','$poblacion','$cp','$telefono')");
  98.                             /*Se introducen los datos de la sesión*/
  99.                             $_SESSION['usuario']=$usuario;
  100.                             $_SESSION['contrasena']=$contrasena;
  101.                             /*Se pone la redirección en HTML porque con PHP, al haber ya salido por el echo en otro lugar de la página no funciona y da error*/
  102.                             echo "<meta http-equiv='Refresh' content='0;url=registro2.php'>";
  103.                         }
  104.  
  105.                 }
  106.                 unset($validacion);
  107.                 $validacion=true;
  108.                 var_dump($validacion);
  109.                 ?>

Eso es todo es PHP, excepto el session_start() del principio, si necesitas más código de otros lenguajes me avisas.
Un saludo.