Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] mostrar mensaje de error login sin redireccionar pagina de login

Estas en el tema de mostrar mensaje de error login sin redireccionar pagina de login en el foro de PHP en Foros del Web. Hola amigos. Tengo una página login.php como la siguiente: Código: <!doctype html> <html> <head> <meta charset="utf-8"> <title>iniciar sesion</title> </head> <body> <form name="login" id="login" method="post" action="verificar.php"> ...
  #1 (permalink)  
Antiguo 14/03/2015, 12:22
 
Fecha de Ingreso: septiembre-2013
Mensajes: 87
Antigüedad: 8 años, 10 meses
Puntos: 1
mostrar mensaje de error login sin redireccionar pagina de login

Hola amigos.
Tengo una página login.php como la siguiente:

Código:
<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>iniciar sesion</title>
    </head>
    
    <body>
    	<form name="login" id="login" method="post" action="verificar.php">
        Correo electrónico
        <input type="email" name="email" id="email" required> 
        Contraseña
        <input type="password" name="password" id="password" required>
        <input type="submit" name="iniciar sesión" id="iniciar sesión" value="iniciar sesión">
        </form>
    </body>
</html>
y el formulario se envia a una página verificar.php que verifica en una base de datos que exista ese email y que tenga esa contraseña, si es así, crea la variable de sesión y sinó, lanza un error.

Código:
<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>verificar</title>
    </head>
    
    <body>
    
	<?php
	$email = $_POST['email'];
	$password = $_POST['password'];
	
    $peticion_usuario = mysqli_query($conexion,"SELECT * FROM usuario WHERE email = '$email' AND password = '$password'");
	$fila_usuario = mysqli_fetch_array($peticion_usuario);
	$cantidad_peticion_usuario = mysqli_num_rows($peticion_usuario);
	
	if(isset($cantidad_peticion_usuario) && $cantidad_peticion_usuario < 0) {	
		$_SESSION['usuario'] = $email;
	} else { echo "email o contraseña incorrecta"; }
    ?>
    	
    </body>
</html>
La cosa es que quisiera que sea como en esos sitios donde si el nombre de usuario o contraseña es incorrecto, lanza el error en la misma página de login.php, sin recargar ninguna página de verificación.
¿Cómo podría hacer eso? ¿Acaso es con RETURN? Va por ese lado? ¿o nada que ver?
Bueno desde ya muchas gracias!!
  #2 (permalink)  
Antiguo 14/03/2015, 13:13
 
Fecha de Ingreso: febrero-2015
Ubicación: Mexico
Mensajes: 46
Antigüedad: 7 años, 5 meses
Puntos: 3
Respuesta: mostrar mensaje de error login sin redireccionar pagina de login

Puedes usar ajax, te dejo el codigo que use yo en mi web para el login:
Código PHP:
Ver original
  1. <div class="contenedor">
  2.     <div id="formulario"    >
  3.         <form method="POST" action="return false" onsubmit="return false">
  4.             <div id="resultado"></div>
  5.             <img src="img/login.png" alt="" width="40" height="40">
  6.             <p><input type="text" name="user" id="user" value="" placeholder="Usuario"></p>
  7.             <p><input type="password" name="pass" id="pass" value="" placeholder="Password"></p>
  8.             <p><button onclick="Validar(document.getElementById('user').value, document.getElementById('pass').value);">Accesar</button></p>
  9.         </form>
  10.         <script>
  11.  
  12.         function Validar(user, pass)
  13.         {
  14.             $.ajax({
  15.                 url: "php/sql/validar.php",
  16.                 type: "POST",
  17.                 data: "user="+user+"&pass="+pass,
  18.                 success: function(resp){
  19.                 $('#resultado').html(resp)
  20.                 }      
  21.             });
  22.         }
  23.         </script>
  24.     </div>
  25. </div>

y en validar.php:

Código PHP:
Ver original
  1. <?php
  2. $con = new mysqli("localhost", "root", "", "comunicacion");
  3. if ($con->connect_errno)
  4. {
  5.     echo "Fallo al conectar a MySQL: (" . $con->connect_errno . ") " . $con->connect_error;
  6.     exit();
  7. }
  8. //Valida que los campos de usuario y contraseña tengan datos para su validacion
  9. @mysqli_query($con, "SET NAMES 'utf8'");
  10. $user = strtolower(mysqli_real_escape_string($con, $_POST['user']));
  11. $pass = mysqli_real_escape_string($con, $_POST['pass']);
  12. if ($user == null || $pass == null)
  13. {
  14.     echo '<span>Por favor complete todos los campos.</span>';
  15. }
  16. else
  17. {
  18.     $consulta = mysqli_query($con, "SELECT usuarios, contrasena FROM usuarios WHERE usuarios = '$user' AND contrasena = '$pass'");
  19.     if (mysqli_num_rows($consulta) > 0)
  20.     {
  21.         $_SESSION["usuario"] = $user;
  22.         echo '<script>location.href = "php/home.php"</script>';
  23.     }
  24.     else
  25.     {
  26.         echo '<span>El usuario y/o clave son incorrectas, vuelva a intentarlo.</span>';
  27.     }
  28. }  
  29. ?>

De esta manera si se equivoca manda un mensaje dentro del <div id="resultado"> sin necesidad de ir a otra pagina..

Saludos
  #3 (permalink)  
Antiguo 14/03/2015, 15:39
 
Fecha de Ingreso: septiembre-2013
Mensajes: 87
Antigüedad: 8 años, 10 meses
Puntos: 1
Respuesta: mostrar mensaje de error login sin redireccionar pagina de login

cron 41 muchas gracias!!! ya me funciono, lo del login era solo un ejemplo, ahora lo puedo usar para un monton de otras cosas mas. muchas gracias!!
  #4 (permalink)  
Antiguo 14/03/2015, 16:33
 
Fecha de Ingreso: febrero-2015
Ubicación: Mexico
Mensajes: 46
Antigüedad: 7 años, 5 meses
Puntos: 3
Respuesta: mostrar mensaje de error login sin redireccionar pagina de login

Por nada amigo cuando gustes (Y)

Etiquetas: formulario, html, login, mensaje, mysql, redireccionar, select, variable
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 21:53.