Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] problema con autentificacion de usuario

Estas en el tema de problema con autentificacion de usuario en el foro de PHP en Foros del Web. Hola todos, les cuento que estoy haciendo.un script de autenticaciin de usuarios, todo lo he realizafo yo, el script en cierta forma funciona, pero no ...
  #1 (permalink)  
Antiguo 26/08/2013, 17:13
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 96
problema con autentificacion de usuario

Hola todos, les cuento que estoy haciendo.un script de autenticaciin de usuarios, todo lo he realizafo yo, el script en cierta forma funciona, pero no como yo quisiera, si ingreso un usuario que no existe da un aviso para que vuelva a iniciar sesion, si ingresa de forma durecta al script lo redirige al login , pero si ingresa un usuario que existe ingresa independiente de la contraseña que le ponga.
He intentado de varias maneras arreglarlo pero no funciona, les dejo los codigos del formilario y del script

index.php (formulario)
Código PHP:
Ver original
  1. <?php
  2. include('config.php');
  3. ?>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  5. <html xmlns="http://www.w3.org/1999/xhtml">
  6. <meta name="viewport" content="width=device-width; initial-scale = 1.0; maximum-scale=1.0; user-scalable=no" />
  7. <head>
  8. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  9. <title>Blog de Skar <?php echo $file; ?></title>
  10. <style type="text/css">
  11. body,td,th {
  12.     font-family: Tahoma, Geneva, sans-serif;
  13.     color: #F00;
  14. }
  15. body {
  16.     background-color: #000;
  17. }
  18. </style>
  19. </head>
  20.  
  21. <body>
  22. <div align="center">
  23. <?php
  24. if (isset($_SESSION['s_user'])) {
  25. echo "Bienvenido a mi sitio has ingresado como ".$_SESSION['s_user'].", gracias por la visita!";
  26. }else{
  27. ?>
  28. <form action="ver.php" method="POST"><br>
  29. Nombre:<input type="text" id="user" name="user">
  30. <br>
  31. Contraseña:<input type="password" id="pass" name="pass">
  32. <br>
  33. <input type="submit" id="enviar" name="enviar" value="Enviar">
  34. <?php
  35. }
  36. ?>
  37. </form>
  38. </div>
  39. </body>
  40. </html>
ver.php
Código PHP:
Ver original
  1. <?php
  2. include('config.php');
  3. if(!isset($_POST['user']) && empty($_POST['pass'])){
  4. sion_destroy();
  5. header("Location: index.php");
  6. }else{
  7. $user= $_POST['user'];
  8. $pass= md5($_POST['pass']);
  9. }
  10. $query="SELECT user FROM users WHERE user='$user'";
  11. $rs= mysql_query($query,$cn);
  12. $numrow= mysql_num_rows($rs);
  13. if($numrow != 0){
  14. $qp= mysql_query("SELECT user,pass FROM users WHERE user='$user'",$cn);
  15. $numpass= mysql_num_rows($qp);
  16. if($numpass != 0){
  17. $row= mysql_fetch_array($qp);
  18. if(!$row['pass'] == $pass){
  19. echo "La contraseña ingresada es incorrecta, vuelve a iniciar sesion, ";
  20. echo "<a href='index.php'>aqui</a>";
  21. }else{
  22. //echo "Bienvenido admin: ".$row['user'];
  23. $_SESSION['s_user']=$row['user'];
  24. header("location: index.php");
  25. }
  26. }else{
  27.     echo "no se encuentra el usuario ingresado\n";
  28.     echo "por favor verifique los datos e ingrese nuevamente, <a href='index.php'>Inicio</a>";
  29. }
  30. }
  31. ?>

Atento a su ayuda gracias
  #2 (permalink)  
Antiguo 26/08/2013, 17:21
 
Fecha de Ingreso: enero-2013
Ubicación: Distrito Federal
Mensajes: 88
Antigüedad: 11 años, 3 meses
Puntos: 1
Respuesta: problema con autentificacion de usuario

Puede ser porque no esta bien escrito tu finalización de sesión
sion_destroy(); Esto debe ser esto session_destroy();

Si solo fue error de dedo... Haz intentado probar con NULL???
Código PHP:
Ver original
  1. if (isset($_POST["enviar"])) {
  2.      if ($_POST['user']==NULL|$_POST['pass']==NULL)
  3.     {
  4.        session_destroy();
  5.        header("Location: index.php");
  6.     }else{
  7.       //Todo tu demás código
  8.    }
}
  #3 (permalink)  
Antiguo 26/08/2013, 17:49
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: problema con autentificacion de usuario

Veo algunos problemas de concepto y también de malas prácticas.



Código PHP:
Ver original
  1. <?php
  2. include('config.php');
  3. if(!isset($_POST['user']) && empty($_POST['pass'])){
  4. sion_destroy();
  5. header("Location: index.php");
  6. }else{
  7. $user= $_POST['user'];//no filtras la variable para que no te inyecten instrucciones maliciosas
  8. $pass= md5($_POST['pass']);
  9. }
  10. $query="SELECT user FROM users WHERE user='$user'";//Aqui metes la consulta en una variable, pero luego la colocas directa
  11. $rs= mysql_query($query,$cn);
  12. $numrow= mysql_num_rows($rs);
  13. if($numrow != 0){
  14. $qp= mysql_query("SELECT user,pass FROM users WHERE user='$user'",$cn);//haces una segunda consulta
  15. $numpass= mysql_num_rows($qp);
  16. if($numpass != 0){
  17. $row= mysql_fetch_array($qp);
  18. if(!$row['pass'] == $pass){// es más simple usar != que negar el ==
  19. echo "La contraseña ingresada es incorrecta, vuelve a iniciar sesion, ";
  20. echo "<a href='index.php'>aqui</a>";
  21. }else{
  22. //echo "Bienvenido admin: ".$row['user'];
  23. $_SESSION['s_user']=$row['user'];
  24. header("location: index.php");
  25. }
  26. }else{
  27.     echo "no se encuentra el usuario ingresado\n";//No es conveniente indicar que el usuario no existe de cara a un posible ataque.
  28.     echo "por favor verifique los datos e ingrese nuevamente, <a href='index.php'>Inicio</a>";
  29. }
  30. }
  31. ?>


Una forma un poco simple sería así:
Código PHP:
Ver original
  1. if(!mysql_num_rows($qp= mysql_query("SELECT user,pass FROM users WHERE user='$user'",$cn)))//vemos si la consulta regresa un dato
  2.      die('Usuario o password incorrecto');//si no existe el usuario. Puedes mandar un mensaje, hacer una redirección o ambos
  3.  
  4. $pasbd=mysql_fetch_assoc($qp);//extraemos el password almacenado
  5. if($pass!=$pasbd)//si no coinciden los passwords
  6.      die('Usuario o password incorrecto');//Ponemos el mensaje
  7.  
  8. //si se encontró el usuario y si el password fue correcto
  9. echo "Bienvenido";
  #4 (permalink)  
Antiguo 26/08/2013, 19:26
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 96
Respuesta: problema con autentificacion de usuario

muchas gracias a los 2, pero mas a @ocp001a me ahorre bastantes lineas de código :D

Etiquetas: formulario, html, mysql, select, usuario, usuarios
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 20:32.