Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: oscarj24 en 9 Junio 2010, 16:29 pm



Título: Problema con validaciones de formulario en PHP
Publicado por: oscarj24 en 9 Junio 2010, 16:29 pm
El formulario consiste en almacenar los datos en la DB. El problema es que las validaciones de PHP no funcionan y nose porque. El formulario es como esta imagen:

TODOS LOS CAMPOS SON REQUERIDOS:
http://img405.imageshack.us/i/form01d.jpg (http://img405.imageshack.us/i/form01d.jpg)

PERO, SI EL USUARIO SELECCIONA EN INDEPENDIENTE, EN BOLETA Y UN TIPO DE TELF. LOS DATOS DEBEN SER REQUERIDOS.
http://img405.imageshack.us/i/form02.jpg (http://img405.imageshack.us/i/form02.jpg)

intente validarlo en php pero no me resulta (como lo dije en un post anterior), sin embargo en javascript ya esta hecho pero como se sabe, el usuario puede deshabilitar el javascript y es por eso que la validacion php se require.

Código
  1. <?php
  2. if (isset($_POST['enviar'])){
  3. $link = mysql_connect('localhost', 'user', 'pwd');
  4. mysql_select_db('dbname', $link);
  5. $sql = "SELECT MAX(ID) FROM inscripciones";
  6. $result = mysql_query($sql);
  7. $row = mysql_fetch_row($result);
  8. $max_id = $row[0]+1;
  9. $nombres=trim($_POST['nombres']);
  10. $apellidos=trim($_POST['apellidos']);
  11. $DNI_CarneExtranjeria=trim($_POST['DNI_CarneExtranjeria']);
  12. $tipo_persona=trim($_POST['tipo_persona']);
  13. $empresa=trim($_POST['empresa']);
  14. $cargo=trim($_POST['cargo']);
  15. $direccion=trim($_POST['direccion']);
  16. $telefono_fijo=trim($_POST['telefono_fijo']);
  17. $telefono_celular=trim($_POST['telefono_celular']);
  18. $tipo_combrobante=trim($_POST['tipo_comprobante']);
  19. $razon_social=trim($_POST['razon_social']);
  20. $RUC=trim($_POST['RUC']);
  21. $_FILES['voucher']['name'] = $max_id."_".$_FILES['voucher']['name'];
  22. $upload_dir = '/home/netline/public_html/inscripciones/vouchers/';
  23. $extension = $_FILES['voucher']['type'];
  24. $size = $_FILES['voucher']['size'];
  25. $upload_file = $upload_dir.($_FILES['voucher']['name']);
  26. $voucher_nombre_db = $_FILES['voucher']['name'];
  27. if(empty($nombres) && empty($apellidos) && empty($DNI_CarneExtranjeria) && ($tipo_persona == 'Dependiente' && (empty($empresa) || empty($cargo) || empty($direccion))) &&(empty($telefono_fijo) || empty($telefono_celular)) && ($tipo_comprobante == 'Factura' && (empty($razon_social) || empty($RUC))) && empty($voucher_nombre_db) && $extension != 'image/jpeg' && $size > 204801){
  28. echo '<html>
  29. <head>
  30. <title>Titulo web</title>
  31. <META http-equiv="refresh" content="6; url=http://www.dominio.com/inscripciones/inscripcion.php">
  32. </head>
  33. <body>
  34. <p>Debe completar todos los datos obligatorios y adjuntar una imagen con extension .JPG y de 200KB de tamaño maximo.</p>
  35. </body>
  36. </html>';
  37. }else{
  38. move_uploaded_file($_FILES['voucher']['tmp_name'], $upload_file);
  39. mysql_query("INSERT INTO inscripciones(Nombres,Apellidos,DNI_CarneExtranjeria,Tipo_Persona,Empresa,Cargo,Direccion,Telefono_Fijo,Telefono_Celular,Tipo_Comprobante,Razon_Social,RUC,Nombre_Voucher) VALUES('$nombres','$apellidos','$DNI_CarneExtranjeria','$tipo_persona','$empresa','$cargo','$direccion','$telefono_fijo','$telefono_celular','$tipo_comprobante','$razon_social','$RUC','$voucher_nombre_db')",$link);
  40. mysql_close($link);
  41. echo '<html>
  42.         <head>
  43.         <title>Titulo web</title>
  44.         <META http-equiv="refresh" content="6; url=http://www.dominio.com/inscripciones/inscripcion.php">
  45.         </head>
  46.         <body>
  47.         <p>Registro exitoso.</p>
  48.         </body>
  49.         </html>';
  50. }
  51. }
  52. ?>

el if de mi archivo php lo explicare de la siguiente forma:

Si nombres esta vacio, apellidos esta vacio, tipo persona es dependiente (y empresa, cargo, direccion estan vacios) y (telefono fijo esta vacio o telefono celular esta vacio - ya que siempre debe haber un telf.) y tipo de comprobante igual a factura (y razon social y ruc estan vacios) y voucher esta vacio y es diferente a jpg y es mayor a 200kb ENTONCES se muestra mensaje de error.

De lo contrario subir el archivo y los datos. Espero me puedan ayudar con la validacion, gracias  ::)


Título: Re: Problema con validaciones de formulario en PHP
Publicado por: Shell Root en 9 Junio 2010, 19:58 pm
Yo, siendo tú, intentaría validar antes de enviar los datos al archivo que valida.
Código: :http://www.desarrolloweb.com/articulos/validar-campo-texto-ajax-php.html
PoC: :http://www.desarrolloweb.com/articulos/ejemplos/ajax/xajax/comprobacion-formulario-online.php


Título: Re: Problema con validaciones de formulario en PHP
Publicado por: bomba1990 en 9 Junio 2010, 20:06 pm
bueno creo que en el post anterior ya te lo dijeron y como que no quieres pararles mucho. Primero tienes que comprobar que la variable que te estan mandando existe, sino te puede dar error.

Código
  1. isset($_POST[mi variable])

despues de que sepas que está, usas la funcion preg_macth y con ello averiguas si cumple lo que necesitas. ademas deberias dejas las funciones de javascript para que se vea mas bonito y mas agradable para el usuario normal qu eno va a desabilitar las javascript.

las imagenes no se ven...


Título: Re: Problema con validaciones de formulario en PHP
Publicado por: oscarj24 en 9 Junio 2010, 20:35 pm
gracias por interesarse, pero es que la variable si existe, el problema es que nose porque no se valida, no entiendo donde esta mi defecto en el codigo,gracias  :)


Título: Re: Problema con validaciones de formulario en PHP
Publicado por: bomba1990 en 11 Junio 2010, 18:38 pm
te explico, que creo que lo que pasa, es que cuando tu tienes tu formulario y se envia vacio, las variables no se crean en $_POST. no se mandan.


Título: Re: Problema con validaciones de formulario en PHP
Publicado por: Pazador en 12 Junio 2010, 07:38 am
si te fijas bien lo que haces despues de comprobar que hayan pulsado el submit es conectarte a la db, hacer una query, extraer el resultado, declarar las variables sin antes haber comprobado que esten vacios, crear rutas para las img... y despues que php haga todo ese proceso, recien al final se te ocurre validar las variables de entrada... porque no lo haces al revez y le ahorras procesos a php (ademas es lo mas optimo)
luego de la condicion del submit deberias comprobar si las variables estan vacias o no y despues de ello recien tendrias que hacer todo el proceso que quieres hacer

Código
  1. if (isset($_POST['enviar'])){
  2.    if(isset($_POST['nombres']) && strlen(trim($_POST['nombres']))== 0)
  3.        echo 'Error escribe tu nombre';
  4.    elseif(isset($_POST['apellidos']) && strlen(trim($_POST['apellidos']))== 0)
  5.        echo 'Error escribe tu apellido';
  6.    /*
  7.     ..
  8.     ....
  9.     ......
  10.     ..........
  11.     ................
  12.     */
  13.    else{
  14.        $link = mysql_connect('localhost', 'user', 'pwd');
  15. mysql_select_db('dbname', $link);
  16.        /*
  17.         ..
  18.         ....
  19.         ......
  20.         ..........
  21.         ................
  22.         */
  23.    }
  24. }
  25.  

asi se veria mas bonito  :rolleyes: