Ayuda con validacion de formulario PHP

Iniciado por oscarj24, 9 Junio 2010, 00:58 AM

0 Miembros y 1 Visitante están viendo este tema.

oscarj24

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 (php) [Seleccionar]
<?php
if (isset(
$_POST['enviar'])){
$link mysql_connect('localhost''user''pwd');
mysql_select_db('dbname'$link);
$sql "SELECT MAX(ID) FROM inscripciones";
$result mysql_query($sql);
$row mysql_fetch_row($result);
$max_id $row[0]+1;
$nombres=trim($_POST['nombres']);
$apellidos=trim($_POST['apellidos']);
$DNI_CarneExtranjeria=trim($_POST['DNI_CarneExtranjeria']);
$tipo_persona=trim($_POST['tipo_persona']);
$empresa=trim($_POST['empresa']);
$cargo=trim($_POST['cargo']);
$direccion=trim($_POST['direccion']);
$telefono_fijo=trim($_POST['telefono_fijo']);
$telefono_celular=trim($_POST['telefono_celular']);
$tipo_combrobante=trim($_POST['tipo_comprobante']);
$razon_social=trim($_POST['razon_social']);
$RUC=trim($_POST['RUC']);
$_FILES['voucher']['name'] = $max_id."_".$_FILES['voucher']['name'];
$upload_dir '/home/netline/public_html/inscripciones/vouchers/';
$extension $_FILES['voucher']['type'];
$size $_FILES['voucher']['size'];
$upload_file $upload_dir.($_FILES['voucher']['name']);
$voucher_nombre_db $_FILES['voucher']['name'];
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){
echo '<html>
<head>
<title>Titulo web</title>
<META http-equiv="refresh" content="6; url=http://www.dominio.com/inscripciones/inscripcion.php">
</head>
<body>
<p>Debe completar todos los datos obligatorios y adjuntar una imagen con extension .JPG y de 200KB de tamaño maximo.</p>
</body>
</html>'
;
}else{
move_uploaded_file($_FILES['voucher']['tmp_name'], $upload_file);
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);
mysql_close($link);
echo '<html>
         <head>
         <title>Titulo web</title>
         <META http-equiv="refresh" content="6; url=http://www.dominio.com/inscripciones/inscripcion.php">
         </head>
         <body>
         <p>Registro exitoso.</p>
         </body>
         </html>'
;
}
}
?>

Shell Root

Tienes varías formas. Mirad.
Código (php) [Seleccionar]
if(!isset($_GET['strCadena'])){
echo "<b>Con isset:</b> Esta vacio <br>";
}

if(empty($_GET['strCadena'])){
echo "<b>Con empty:</b> Esta vacio <br>";
}

if($_GET['strCadena'] == ''){
echo "<b>Con '':</b> Esta vacio <br>";
}

if($_GET['strCadena'] == null){
echo "<b>Con null:</b> Esta vacio <br>";
}

if(strlen($_GET['strCadena']) == 0){
echo "<b>Con strlen:</b> Esta vacio <br>";
}

Hasta con Expresiones Regulares lo podes hacer.
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

~ Yoya ~

Código (php) [Seleccionar]
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 (php) [Seleccionar]
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 (php) [Seleccionar]
<?php
if(isset($_POST['enviar'])){
echo 
'Se ah enviado el formulario';
echo 
"<br>El valor de enviar es ".$_POST['enviar'];
echo 
"1 = true, 0 = false";
exit;
}
?>

<form name="form" action="ej.php" method="POST">
Nombre<br>
<input name="nombre" type="text">
<br>
<input name="enviar" type="submit" value="Enviar">

</form>


Salida:
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.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

oscarj24

Despues pondre el formulario, una pregunta... siempre se usa el metodo $GET para las validaciones?

Shell Root

What the fuck?
Podes usar $_GET[] o $_POST[] o creo que hasta con las mismas $_SESSION[]
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

~ Yoya ~

GET y POST son metodos de envio HTTP, si no sabes lo que haces siempre tendras problemas...
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

oscarj24

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.

raul338

Cita de: oscarj24 en  9 Junio 2010, 03:11 AM
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

oscarj24

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

raul338

Cita de: 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

empty[$nombres]  :huh:

es

emtpy($nombres)
;) pruebalo