Foros del Web » Programando para Internet » PHP »

Si usuario no existe, mensaje bajo del Form

Estas en el tema de Si usuario no existe, mensaje bajo del Form en el foro de PHP en Foros del Web. Hola, no estoy seguro de si este tema va aquí en PHP o en Javascript pero lo pongo aquí ya que el que consulta la ...
  #1 (permalink)  
Antiguo 24/12/2013, 12:18
 
Fecha de Ingreso: febrero-2013
Mensajes: 119
Antigüedad: 9 años, 7 meses
Puntos: 2
Si usuario no existe, mensaje bajo del Form

Hola, no estoy seguro de si este tema va aquí en PHP o en Javascript pero lo pongo aquí ya que el que consulta la base de datos de mi página es PHP.

Tengo una base de datos con usuarios y un formulario de acceso, cuando se intenta acceder con un usuario inexistente, el script PHP te lleva a una página de error:

Código:
}else { 
 header("Location: ../../nouser.html"); 
 }
Mi pregunta es: ¿Cómo insertar un párrafo "<p>" en la misma página después de que el script PHP haya comprobado que no existe el usuario?

Sé cómo insertar un párrafo con Javascript, pero no sé cómo insertarlo en la misma página después de la comprobación en la base de datos...

Muchas gracias de antemano y feliz navidad.
  #2 (permalink)  
Antiguo 24/12/2013, 12:59
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 11 años
Puntos: 397
Respuesta: Si usuario no existe, mensaje bajo del Form

No puedes imprimir nada antes de ejecutar un header o session_start, el <p> debería ir en nouser.html

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #3 (permalink)  
Antiguo 24/12/2013, 16:30
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.545
Antigüedad: 10 años, 10 meses
Puntos: 972
Respuesta: Si usuario no existe, mensaje bajo del Form

Si deseas reemplazar la redirección a la página de error por un mensaje en la misma página, debes de utilizar Ajax.

Básicamente, envías los datos para su procesamiento, previenes el comportamiento natural del evento submit, que es el que se ejecuta cuando envías los datos del formulario, ejecutas el método Ajax y, cuando recibas la respuesta del servidor, muestras dicho resultado en el párrafo.

Código Javascript:
Ver original
  1. $("form").submit(function(e){
  2.      e.preventDefault();
  3.      $.ajax({
  4.           url: $(this).prop("action"),
  5.           type: $(this).prop("method"),
  6.           data: $(this).serialize(),
  7.           success: function(response){
  8.                $("#parrafo").html(response);
  9.           }
  10.      });
  11. });

Mientras que en el archivo que procesa los datos, que puede ser el mismo archivo u otro, harías esto:

Código PHP:
Ver original
  1. $conexion = new mysqli ("servidor", "usuario", "password", "bd");
  2.  
  3. if ($conexion->connect_error)
  4.      exit ("No se ha podido realizar la conexión con la base de datos");
  5.  
  6. $user = $conexion->real_escape_string(strip_tags($_POST["user"]));
  7. $pass = $conexion->real_escape_string(strip_tags($_POST["pass"]));
  8.  
  9. $consulta = $conexion->query(sprintf("SELECT * FROM usuarios WHERE user = '%s' AND pass = '%s'", $user, $pass));
  10.  
  11. if ($consulta->num_rows)
  12.      header ("Location: inicio.php");
  13. else
  14.      echo "Error: La identificación ha fallado. Vuelva a intentarlo";
  15.  
  16. $consulta->free();
  17. $conexion->close();

Realizo la conexión con la base de datos, una vez establecida, desinfecto los datos recibidos de posible contenido malicioso, luego, realizo la consulta, si obtengo resultados de dicha consulta, redirecciono al usuario hacia la vista principal de la página (cuyo archivo puede tener otro nombre, este es solo un ejemplo), caso contrario, imprimo un mensaje de error de identificación, que es el que se mostrará en el párrafo.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: formulario, párrafo
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 13:57.