Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema de validación PHP

Estas en el tema de Problema de validación PHP en el foro de PHP en Foros del Web. Buenas noches :) Tengo un pequeño problema que me está matando, no entiendo porqué sucede, creo que no debería ya que lo he hecho otras ...
  #1 (permalink)  
Antiguo 27/05/2014, 20:39
 
Fecha de Ingreso: abril-2014
Ubicación: 3 metros sobre la casa de abajo
Mensajes: 40
Antigüedad: 10 años
Puntos: 6
Problema de validación PHP

Buenas noches :)

Tengo un pequeño problema que me está matando, no entiendo porqué sucede, creo que no debería ya que lo he hecho otras veces.

En fin, ya que el problema no se solucionaba, hice un pequeño ejemplo para probarlo a menor escala y sin tanto código.

Mi problema es el siguiente, tengo este código básico:

Código HTML:
<!DOCTYPE html>
<html lang="es">
    <head>
    	<meta charset="utf-8"/>
    	<form method="POST" action="formulario.php">
        <title>Titulo</title>
    </head>
    <body>
	Nombre: <input type="text" name="nombre"><br>
	Edad: <input type="text" name="edad"><br>
	<input type="submit">
    </body>
        <?php
    	$nombre=$_POST['nombre'];
    	$edad=$_POST['edad'];

    	if (isset($nombre) or isset($edad) == "") {
    		echo "debe introducir el nombre y la edad";
    	} else {
    		echo "Gracias por registrarse";
    	}
    	
    ?>

</html> 


Como pueden ver, es simplemente un validador, la idea es que si los campos quedan vacios aparezca el mensaje error en la pagina, y si los campos contienen informacion de igual manera aparezca el mensaje de bienvenida en la misma pagina. Tan simple como eso, pero tan desgraciadamente como que...

no me resulta por ningun lado, he intentado con lo poco que sé y no me anda el código de manera correcta, es decir, al entrar a la pagina de antemano me aparece el mensaje de error (el cual debería aparecer al momento de enviar el formulario), aun así, luego de enviarlo me sigue saliendo el mismo mensaje de error. La cosa está así:

Abro la pagina y sale el bendito mensaje de error (respiro hondo).
Envio el formulario VACIO y sale el mensajito de error (como debe ser).
Envio el formulario LLENO y sale el mensajito de error (me desespera).

Estoy usando WAMPSERVER, tengo todo en la carpeta "www", el navegador fue configurado para ser usado por defecto con WAMPSERVER, hasta ahi todo bien, no encuentro otro detalle técnico que yo conozca.

¿Alguien podría explciarme como hacer lo siguiente?

1.- Que NINGUN mensaje aprezca al abrir la pagina (ya que solo debe aparecer al enviar el formulario).

2.- Que el mensaje de error aparezca SOLO cuando de verdad se cometa el error de no rrellenar el formulario.

3.- Que el mensaje de bienvenida aparezca SOLO cuando los datos se introduzcan correctamente.

Es algo básico, elemental, no es la primera vez que lo hago, pero no entiendo porque ahora no me sale :S

Les agradeceria un mundo a quienes me puedan ayudar.

La extension del archivo con el codigo es .php


P.D: Hice el formulario de procesamiento por separado, pero sigue igual de horrible
  #2 (permalink)  
Antiguo 27/05/2014, 20:51
 
Fecha de Ingreso: abril-2014
Ubicación: 3 metros sobre la casa de abajo
Mensajes: 40
Antigüedad: 10 años
Puntos: 6
Respuesta: Problema de validación PHP

Desconocia completamente el empty en la condicion. Ahora solo falta que no aparezca el mensaje de error en la paginadel formulario al ser abierta.
  #3 (permalink)  
Antiguo 27/05/2014, 21:07
 
Fecha de Ingreso: diciembre-2013
Mensajes: 108
Antigüedad: 10 años, 3 meses
Puntos: 1
Respuesta: Problema de validación PHP

Cita:
Iniciado por Luminis Ver Mensaje
Desconocia completamente el empty en la condicion. Ahora solo falta que no aparezca el mensaje de error en la paginadel formulario al ser abierta.
Ahora que ya sabes que el empty existe deberias hacerlo sin enviar a otro formulario ocea me refiero a que lo valides en la misma pag en action pon action="" ocea nada, para no desprestigiar el empty existen miles de soluciones para validar campos vacios yo uso if anidados javascript en fin convino esos lenguaje y sale algo vacan.
  #4 (permalink)  
Antiguo 28/05/2014, 00:24
Avatar de Atomycko  
Fecha de Ingreso: diciembre-2005
Ubicación: Zapopan Jal.
Mensajes: 92
Antigüedad: 18 años, 3 meses
Puntos: 12
Respuesta: Problema de validación PHP

primero verifica que se ha enviado POST:

Código PHP:
<?php
if(count($_POST) > 0){
      
// hacer la cosa
}
?>
o para ser mas exactos...

Código HTML:
<form>
<input type="hidden" name="abcd" value="1" />
...
</form>
<?php
if(isset($_POST['abcd'])){
      // hacer la cosa
}
?> 
__________________
PD: Los acentos fueron secuestrados.

Última edición por Atomycko; 28/05/2014 a las 00:29
  #5 (permalink)  
Antiguo 28/05/2014, 04:18
 
Fecha de Ingreso: abril-2014
Ubicación: 3 metros sobre la casa de abajo
Mensajes: 40
Antigüedad: 10 años
Puntos: 6
Respuesta: Problema de validación PHP

Gracias a los 2 por sus comentarios, me han dado una idea ;)

Saludos!
  #6 (permalink)  
Antiguo 28/05/2014, 05:35
lolainas
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema de validación PHP

Usa la extensión filter
Código PHP:
Ver original
  1. <?php
  2. $form = filter_input_array(INPUT_POST, [
  3.     'email'  => FILTER_VALIDATE_EMAIL,
  4.     'nombre' => FILTER_DEFAULT,
  5.     'edad'   => [
  6.         'filter'  => FILTER_VALIDATE_INT,
  7.         'options' => ['min_range' => 18, 'max_range' => 120]
  8. ]]);
  9. ?>
  10. <!DOCTYPE html>
  11. <html lang="es">
  12.     <head>
  13.         <meta charset="utf-8">
  14.         <title>Validación</title>
  15.     </head>
  16.     <body>
  17.         <?php if ($form && $form['email'] && $form['nombre'] && $form['edad']) : ?>
  18.             <h1>Gracias!</h1>
  19.             <p>Email: <?= $form['email'] ?></p>
  20.             <p>Nombre: <?= $form['nombre'] ?></p>
  21.             <p>Edad: <?= $form['edad'] ?></p>
  22.         <?php else : ?>
  23.             <form method="post">
  24.                 <input type="text" name="email" placeholder="Correo electrónico" />
  25.                 <?php if ($form && empty($form['email'])) : ?>
  26.                     <span style="color:red">Email inválido</span>
  27.                 <?php endif; ?>
  28.                 <br />
  29.                 <input type="text" name="nombre" placeholder="Nombre" />
  30.                 <?php if ($form && empty($form['nombre'])) : ?>
  31.                     <span style="color:red">Nombre inválido</span>
  32.                 <?php endif; ?>
  33.                 <br />
  34.                 <input type="text" name="edad" placeholder="Edad" />
  35.                 <?php if ($form && empty($form['edad'])) : ?>
  36.                     <span style="color:red">Edad inválida</span>
  37.                 <?php endif; ?>
  38.                 <br />
  39.                 <button type="submit">Enviar</button>
  40.             </form>
  41.         <?php endif; ?>
  42.     </body>
  43. </html>

Tips para más adelante:

Para qué escribir una expresión regular para correos electrónicos si PHP proporciona una forma de saber si es válido?

Ten cuidado, los datos sólo se validan a la entrada y se limpian sólo en la salida.
Yo como usuario tengo derecho a elegir la contraseña que me apetezca, qué pasa si elijo "hsa23jk<j4sd>fds&*y" y tú me haces un strip tags antes de comprobar que es correcta?
pues que compararás esto "hsa23jk<j4sd>fds&*y" con esto "hsa23jk?fds&*y" y nunca voy a poder entrar...

Etiquetas: formulario, html
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:16.