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
<?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>';
}
}
?>
Tienes varías formas. Mirad.
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.
if (isset($_POST['enviar'])){
Si estas definida el if se ejecuta y si no, falla el if... Yo prefiero usar empty...Quedaria asi:
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:
<?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.
Despues pondre el formulario, una pregunta... siempre se usa el metodo $GET para las validaciones?
What the fuck?
Podes usar $_GET[] o $_POST[] o creo que hasta con las mismas $_SESSION[]
GET y POST son metodos de envio HTTP, si no sabes lo que haces siempre tendras problemas...
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.
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
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
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
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 :-\