Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: oscarj24 en 9 Junio 2010, 00:58 am



Título: Ayuda con validacion de formulario PHP
Publicado por: oscarj24 en 9 Junio 2010, 00:58 am
Hola, tengo el siguiente script que envia la informacion de un formulario y un upload de imagen a la base de datos. El problema es que si en el formulario deshabilito el javascript, las validaciones dejan de funcionar y por eso en el archivo php debo realizar las
validaciones del servidor. Como veran, en mi codigo estan las condificiones usando "empty" pero, al subirlo al servidor y deshabilitar el javascript, cuando doy click a Enviar se envia todo asi no haya ningun dato. Soy nuevo en php asi que no me critiquen mucho, ahi les va el codigo y espero su ayuda con la validacion, gracias de antemano  ;D

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. ?>


Título: Re: Ayuda con validacion de formulario PHP
Publicado por: Shell Root en 9 Junio 2010, 01:17 am
Tienes varías formas. Mirad.
Código
  1. if(!isset($_GET['strCadena'])){
  2. echo "<b>Con isset:</b> Esta vacio <br>";
  3. }
  4.  
  5. if(empty($_GET['strCadena'])){
  6. echo "<b>Con empty:</b> Esta vacio <br>";
  7. }
  8.  
  9. if($_GET['strCadena'] == ''){
  10. echo "<b>Con '':</b> Esta vacio <br>";
  11. }
  12.  
  13. if($_GET['strCadena'] == null){
  14. echo "<b>Con null:</b> Esta vacio <br>";
  15. }
  16.  
  17. if(strlen($_GET['strCadena']) == 0){
  18. echo "<b>Con strlen:</b> Esta vacio <br>";
  19. }
Hasta con Expresiones Regulares lo podes hacer.


Título: Re: Ayuda con validacion de formulario PHP
Publicado por: ~ Yoya ~ en 9 Junio 2010, 01:29 am
Código
  1. if (isset($_POST['enviar'])){
Si estas definida el if se ejecuta y si no, falla el if... Yo prefiero usar empty...Quedaria asi:
Código
  1. if(!empty($_POST['enviar'])){
Hay verifico si contiene algun valor, si contiene algun valor se ejecuta el if....
Cuidado con esto $_POST['enviar'] , porque te puede dar true siempre...
Ejemplo:

Código
  1. <?php
  2. if(isset($_POST['enviar'])){
  3. echo 'Se ah enviado el formulario';
  4. echo "<br>El valor de enviar es ".$_POST['enviar'];
  5. echo "1 = true, 0 = false";
  6. }
  7. ?>
  8. <form name="form" action="ej.php" method="POST">
  9. Nombre<br>
  10. <input name="nombre" type="text">
  11. <br>
  12. <input name="enviar" type="submit" value="Enviar">
  13.  
  14. </form>

Salida:
Código:
Se ah enviado el formulario
El valor de enviar es Enviar1 = true, 0 = false

Siempre que presiones enviar, siempre contendrá un valor verdadero, así que tienes que comprobar los otros campos para verificar si contienen algún valor... Muestra el source entero, ya que tampoco veo el formulario en el source que posteaste....

Saludos.


Título: Re: Ayuda con validacion de formulario PHP
Publicado por: oscarj24 en 9 Junio 2010, 02:24 am
Despues pondre el formulario, una pregunta... siempre se usa el metodo $GET para las validaciones?


Título: Re: Ayuda con validacion de formulario PHP
Publicado por: Shell Root en 9 Junio 2010, 02:41 am
What the fuck?
Podes usar $_GET[] o $_POST[] o creo que hasta con las mismas $_SESSION[]


Título: Re: Ayuda con validacion de formulario PHP
Publicado por: ~ Yoya ~ en 9 Junio 2010, 03:03 am
GET y POST son metodos de envio HTTP, si no sabes lo que haces siempre tendras problemas...


Título: Re: Ayuda con validacion de formulario PHP
Publicado por: oscarj24 en 9 Junio 2010, 03:11 am
eso ya lo tengo claro, lo que sucede es que en mi ejemplo yo tengo almacenadas las variables de esta forma:

$nombres = trim($_POST['nombres']);

y en las validaciones...

if(empty[$nombres])... && todo lo demas

VI TU EJEMPLO SOBRE LAS VALIDACIONES CON GET Y ES OBVIO QUE
SE DEBERIAN REEMPLAZAR POR POST EN ESTE CASO PERO COMO VERAS, NO ME RESULTA USANDO POST, POR ESO HICE LA PREGUNTA.


Título: Re: Ayuda con validacion de formulario PHP
Publicado por: raul338 en 9 Junio 2010, 13:59 pm
VI TU EJEMPLO SOBRE LAS VALIDACIONES CON GET Y ES OBVIO QUE
SE DEBERIAN REEMPLAZAR POR POST EN ESTE CASO PERO COMO VERAS, NO ME RESULTA USANDO POST, POR ESO HICE LA PREGUNTA.
Pareciera como si estuvieras gritando :¬¬

es raro, como dice mi buen amigo shellroot, funciona con GET, POST, SESSION, Server y hasta con alguno que te inventes (aka variables)

Fijate primero si en post te esta llegando algo

Imprime un print_r($_POST), a lo mejor no te llega nada y quieres validar? WTF :xD

aunque si te muestra los datos que envias, algo estas haciendo mal


Título: Re: Ayuda con validacion de formulario PHP
Publicado por: oscarj24 en 9 Junio 2010, 15:40 pm
no era la intencion que pareciera que gritara  :-X pero en fin, los valores de las variables si me llegan a la base de datos, lo que no me funciona es la validacion y nose por que... asi desactive el javascript en el formulario, la validacion php no funciona


Título: Re: Ayuda con validacion de formulario PHP
Publicado por: raul338 en 9 Junio 2010, 16:15 pm
eso ya lo tengo claro, lo que sucede es que en mi ejemplo yo tengo almacenadas las variables de esta forma:

$nombres = trim($_POST['nombres']);

y en las validaciones...

if(empty[$nombres])... && todo lo demas

empty[$nombres]  :huh:

es

emtpy($nombres)
 ;) pruebalo


Título: Re: Ayuda con validacion de formulario PHP
Publicado por: oscarj24 en 10 Junio 2010, 02:51 am
ya lo he probado con paréntesis, me confundí en mi ultimo post pero si es que revisas el primer post veras la variable entre paréntesis y aun así no me funciona la validación  :-\