Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema con Login PHP

Estas en el tema de Problema con Login PHP en el foro de PHP en Foros del Web. Hola, Buenas. Tengo un problema a la hora de hacer el login en php. El problema viene a la hora de mostrarme el mensaje de ...
  #1 (permalink)  
Antiguo 20/11/2015, 09:48
 
Fecha de Ingreso: noviembre-2015
Ubicación: España
Mensajes: 18
Antigüedad: 8 años, 5 meses
Puntos: 1
Problema con Login PHP

Hola, Buenas. Tengo un problema a la hora de hacer el login en php. El problema viene a la hora de mostrarme el mensaje de si el usuario o la contraseña son erroneos. No me muestra el mensaje simplemete se recarga la pagina sin mostrar el "Error"
Por lo demas esta todo bien.

Dejo aqui el html y el php (la validacion la hace en el mismo archivo para mostrar el mensaje en el caso de el email no este en la base de datos.)

Código HTML:
Ver original
  1. <form action="" method="POST">
  2.  
  3.      <label class="col-lg-4 control-label">Correo Electronico</label>
  4.      <input type="email" name="forml_email" reqired />                              
  5.      <div> <?php echo "$mensaje";?></div>
  6.        
  7.       <label class="col-lg-4 control-label"> Contraseña</label>
  8.       <input type="password" name="forml_contrasena" required />
  9.                            
  10. <button type="submit"  name="boton">Entrar</button>
  11.                                                        
  12. </form>

Código PHP:
Ver original
  1. <?php
  2.  
  3.     //Codigo
  4.     $sql = "SELECT * FROM usuario WHERE email = '".$_POST['forml_email']."' ";
  5.         $result = mysqli_query($con, $sql);
  6.  
  7.             if (mysqli_num_rows($result) > 0){
  8.  
  9.                 while($row = mysqli_fetch_assoc($result)) {
  10.                
  11.                     $email = $row ['email'];
  12.                     $contrasena = $row ['contrasena'];
  13.                     $nombre = $row ['nombre'];
  14.                     $admin = $row ['admin'];               
  15.                    
  16.                     if ($email == $_POST['forml_email'] && $contrasena == $_POST['forml_contrasena']){
  17.                         session_start();
  18.                         $_SESSION['email'] = $email;
  19.                         $_SESSION['nombre'] = $nombre;  
  20.                         $_SESSION['contrasena'] = $contrasena;
  21.                         $_SESSION['admin'] = $admin;
  22.                        
  23.                        
  24.                         header("location:panels/panel_control.php");   
  25.                        
  26.                         }else {
  27.                         $mensaje .= "<p>Usuario o contraseña incorrectos</p>";  
  28.                         }
  29.                     if ($admin == 'si'){  
  30.                    
  31.                         header("location:panels/panel_admin.php");
  32.                    
  33.                     }                                      
  34.                 }
  35.             }
  36. ?>
  #2 (permalink)  
Antiguo 20/11/2015, 10:05
Avatar de tiobavie  
Fecha de Ingreso: noviembre-2015
Ubicación: Santander
Mensajes: 13
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: Problema con Login PHP

No soy ningun experto, pero... ¿para mostrar un mensaje, en tu caso en el "else" no debería haber un echo? Algo así como:
esle{
echo "<p>Usuario o contraseña incorrecto</p>";
}
No se... es una sugerencia...
  #3 (permalink)  
Antiguo 20/11/2015, 10:15
 
Fecha de Ingreso: diciembre-2014
Mensajes: 69
Antigüedad: 9 años, 3 meses
Puntos: 2
Respuesta: Problema con Login PHP

Me parece que en tu archivo php estas aplicando mal la logica te voy a pasar un ejemplo de uno que hice
Código PHP:
Ver original
  1. <?php
  2. include('../controllers/conect.php');
  3. $user = $_POST['username'];
  4. $password = md5($_POST['password']);
  5. $query = "SELECT * FROM users WHERE username='$user' AND password = '$password'";
  6. $result = mysql_query($query);
  7. if ($reg = mysql_num_rows($result)){
  8.     $registro = mysql_fetch_array($result);
  9.     session_start();
  10.     $name = $registro['name'];
  11.     $id = $registro['id'];
  12.     $_SESSION['name'] = $name;
  13.     $_SESSION['id'] = $id;
  14.     header("location:index.php");
  15. }else {
  16.     echo "<script language=\"JavaScript\">\n";
  17.     echo "alert('Usernname / Password incorrectos!');\n";
  18.     echo "window.location='login.php'";
  19.     echo "</script>";
  20.     ob_end_flush();
  21. }
  22. ?>
claro en esta caso use un alert de javascript para mostrar el error
  #4 (permalink)  
Antiguo 20/11/2015, 10:17
Avatar de chronos682  
Fecha de Ingreso: febrero-2004
Ubicación: Tunja - Boyacá - Colombia
Mensajes: 627
Antigüedad: 20 años, 2 meses
Puntos: 69
Respuesta: Problema con Login PHP

Debes poner el código html del formulario DESPUES del código php para que una vez haga la comprobación de la contraseña muestre el mensaje de error en el mismo formulario y quítale las comillas al echo:

Código PHP:
Ver original
  1. <form action="" method="POST">
  2.  
  3.      <label class="col-lg-4 control-label">Correo Electronico</label>
  4.      <input type="email" name="forml_email" reqired />                                
  5.        
  6.       <label class="col-lg-4 control-label"> Contraseña</label>
  7.       <input type="password" name="forml_contrasena" required />
  8.                            
  9. <button type="submit"  name="boton">Entrar</button>
  10.                                                        
  11. </form>
  12. <div> <?php echo $mensaje;?></div>
__________________
Si te gustó la respuesta dale +1

HERNÁN G. SIABATO M.
[email protected]
  #5 (permalink)  
Antiguo 20/11/2015, 10:19
 
Fecha de Ingreso: noviembre-2015
Ubicación: España
Mensajes: 18
Antigüedad: 8 años, 5 meses
Puntos: 1
Respuesta: Problema con Login PHP

Cita:
Iniciado por tiobavie Ver Mensaje
No soy ningun experto, pero... ¿para mostrar un mensaje, en tu caso en el "else" no debería haber un echo? Algo así como:
esle{
echo "<p>Usuario o contraseña incorrecto</p>";
}
No se... es una sugerencia...
Vale pero estaba intentando concatenar. Lo probe con el echo y nada. Gracias !
  #6 (permalink)  
Antiguo 20/11/2015, 10:20
 
Fecha de Ingreso: noviembre-2015
Ubicación: España
Mensajes: 18
Antigüedad: 8 años, 5 meses
Puntos: 1
Respuesta: Problema con Login PHP

Cita:
Iniciado por chronos682 Ver Mensaje
Debes poner el código html del formulario DESPUES del código php para que una vez haga la comprobación de la contraseña muestre el mensaje de error en el mismo formulario y quítale las comillas al echo:

Código PHP:
Ver original
  1. <form action="" method="POST">
  2.  
  3.      <label class="col-lg-4 control-label">Correo Electronico</label>
  4.      <input type="email" name="forml_email" reqired />                                
  5.        
  6.       <label class="col-lg-4 control-label"> Contraseña</label>
  7.       <input type="password" name="forml_contrasena" required />
  8.                            
  9. <button type="submit"  name="boton">Entrar</button>
  10.                                                        
  11. </form>
  12. <div> <?php echo $mensaje;?></div>
Lo probe asi puse primero el php y despues el formulario en HTML pero cuando quiero mostrar la variale $mensaje me llega un NULL
  #7 (permalink)  
Antiguo 20/11/2015, 10:29
Avatar de chronos682  
Fecha de Ingreso: febrero-2004
Ubicación: Tunja - Boyacá - Colombia
Mensajes: 627
Antigüedad: 20 años, 2 meses
Puntos: 69
Respuesta: Problema con Login PHP

Viendo el código php tienes varias cosas que debes corregir:
1. Nunca guardes las contraseñas en la BD sin encriptar porque si alguien logra ingresar sin permiso a la BD podrá robar todas las contraseñas de los usuarios. Lee el manual acerca de la función crypt.
2. No hay razón para guardar la contraseña en una variable de sesión.
3. Si te das cuenta del if que valida si el usuario es administrador nunca va a llegar hasta allá a menos que coloque mal los datos de login, ese if debes colocarlo antes de esta línea:

Código PHP:
Ver original
  1. header("location:panels/panel_control.php");
__________________
Si te gustó la respuesta dale +1

HERNÁN G. SIABATO M.
[email protected]
  #8 (permalink)  
Antiguo 20/11/2015, 10:41
 
Fecha de Ingreso: noviembre-2015
Ubicación: España
Mensajes: 18
Antigüedad: 8 años, 5 meses
Puntos: 1
Respuesta: Problema con Login PHP

Ya he arreglado eso pero la cuestion es que sigue sin mostrarme el mensaje..
  #9 (permalink)  
Antiguo 20/11/2015, 10:43
Avatar de chronos682  
Fecha de Ingreso: febrero-2004
Ubicación: Tunja - Boyacá - Colombia
Mensajes: 627
Antigüedad: 20 años, 2 meses
Puntos: 69
Respuesta: Problema con Login PHP

Pon el código completo a ver cómo quedó.
__________________
Si te gustó la respuesta dale +1

HERNÁN G. SIABATO M.
[email protected]
  #10 (permalink)  
Antiguo 20/11/2015, 10:48
 
Fecha de Ingreso: noviembre-2015
Ubicación: España
Mensajes: 18
Antigüedad: 8 años, 5 meses
Puntos: 1
Respuesta: Problema con Login PHP

PHP:
Código PHP:
Ver original
  1. <?php
  2.  
  3.     //Codigo
  4.     $sql = "SELECT * FROM usuario WHERE email = '".$_POST['forml_email']."' ";
  5.         $result = mysqli_query($con, $sql);
  6.  
  7.             if (mysqli_num_rows($result) > 0){
  8.  
  9.                 while($row = mysqli_fetch_assoc($result)) {
  10.                
  11.                     $email = $row ['email'];
  12.                     $contrasena = $row ['contrasena'];
  13.                     $nombre = $row ['nombre'];
  14.                     $admin = $row ['admin'];
  15.  
  16.                    
  17.                        
  18.                    
  19.                     if ($email == $_POST['forml_email'] && $contrasena == $_POST['forml_contrasena']){
  20.                         session_start();
  21.                         $_SESSION['email'] = $email;
  22.                         $_SESSION['nombre'] = $nombre;  
  23.                         $_SESSION['admin'] = $admin;
  24.                        
  25.                         if ($admin == 'si'){  
  26.                         header("location:panels/panel_admin.php");
  27.                         }  
  28.                        
  29.                         header("location:panels/panel_control.php");   
  30.                        
  31.                         }else {                    
  32.                         $mensaje .= 'Error en el usuario o contraseña';
  33.                         }
  34.                        
  35.                                
  36.                 }
  37.             }
  38. ?>

HTML:

Código HTML:
Ver original
  1. <form action="" method="POST">
  2.  
  3.      <label class="col-lg-4 control-label">Correo Electronico</label>
  4.      <input type="email" name="forml_email" reqired />                              
  5.      <div> <?=mensaje?></div>
  6.        
  7.       <label class="col-lg-4 control-label"> Contraseña</label>
  8.       <input type="password" name="forml_contrasena" required />
  9.                            
  10. <button type="submit"  name="boton">Entrar</button>
  11.                                                        
  12. </form>
  #11 (permalink)  
Antiguo 20/11/2015, 10:51
Avatar de chronos682  
Fecha de Ingreso: febrero-2004
Ubicación: Tunja - Boyacá - Colombia
Mensajes: 627
Antigüedad: 20 años, 2 meses
Puntos: 69
Respuesta: Problema con Login PHP

Coloca al principio del código php esto:

Código PHP:
Ver original
  1. var_dump ($_POST);

Y posteas qué te sale en pantalla.
__________________
Si te gustó la respuesta dale +1

HERNÁN G. SIABATO M.
[email protected]
  #12 (permalink)  
Antiguo 20/11/2015, 10:56
 
Fecha de Ingreso: noviembre-2015
Ubicación: España
Mensajes: 18
Antigüedad: 8 años, 5 meses
Puntos: 1
Respuesta: Problema con Login PHP

Si no relleno el formulario y no lo envio me sale esto:

array(0) { }

Si relleno el formulario con un usuario que no tengo en la base de datos y le doy a enviar se me carga otra vez la pagina (sin mostrarme el mensaje de error) y me mustra esto.

array(3) { ["forml_email"]=> string(27) "[email protected]" ["forml_contrasena"]=> string(9) "123456789" ["boton"]=> string(0) "" }
  #13 (permalink)  
Antiguo 20/11/2015, 11:12
Avatar de chronos682  
Fecha de Ingreso: febrero-2004
Ubicación: Tunja - Boyacá - Colombia
Mensajes: 627
Antigüedad: 20 años, 2 meses
Puntos: 69
Respuesta: Problema con Login PHP

Los datos si estan llegando por post entonces el problema es más abajo, puede ser al hacer la query a mysql. Añade esto:

Código PHP:
Ver original
  1. $result = mysqli_query($con, $sql) or die (mysqli_error($con));

A ver si te arroja algún error.
__________________
Si te gustó la respuesta dale +1

HERNÁN G. SIABATO M.
[email protected]
  #14 (permalink)  
Antiguo 20/11/2015, 11:59
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Problema con Login PHP

Saludo.
Aparte de lo sugerido ya por chronos682,
hacer un echo a la variable $sql para ejecutar el query en
mysqlworkbrench, consola o phpmyadmin.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com

Etiquetas: html, login, mysql, select, sql
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 02:16.