Foros del Web » Programando para Internet » PHP »

Log-ins, Log-outs, seguridad, sesiones!

Estas en el tema de Log-ins, Log-outs, seguridad, sesiones! en el foro de PHP en Foros del Web. Buenas a todos comunidad de ForosdelWeb, ando yo en mis cosas y mis proyectos pequeños, y he llegado a la parte de sesiones, y esto ...
  #1 (permalink)  
Antiguo 04/12/2008, 18:28
 
Fecha de Ingreso: marzo-2008
Mensajes: 73
Antigüedad: 16 años
Puntos: 0
Log-ins, Log-outs, seguridad, sesiones!

Buenas a todos comunidad de ForosdelWeb, ando yo en mis cosas y mis proyectos pequeños, y he llegado a la parte de sesiones, y esto me preocupa mucho ya que es un proyecto que montaré online y en realidad hay poca información al respecto de como debería estar estructurado un sistema de logueo correctamente en PHP.

Mi progreso ha sido el siguiente...

index.php:
Código php:
Ver original
  1. <?php
  2.  
  3. if (isset($_GET[login_failed]) and $_GET[login_failed] === "yes")
  4. {$error = TRUE; $errorMsg = "Nombre de Usuario o Password inv&aacute;lidos.";}
  5.  
  6. if (isset($_GET[db_error]) and $_GET[db_error] === "yes")
  7. {$error = TRUE; $errorMsg = "No se pudo establecer conexi&oacute;n con la Base de Datos de Login.";}
  8.  
  9. if (isset($_GET[logoff]))
  10. {
  11.     $logoff = TRUE;
  12.     setcookie(username,"",time()-60);
  13.     setcookie(userpass,"",time()-60);
  14.     session_unset();
  15.    
  16.     unset($_SESSION[username]);
  17.     unset($_SESSION[userpass]);
  18.     $_SESSION = array();
  19. }
  20. ?>
No estoy bien ubicado con el uso de cookies y el delogueo, ahí sale si hubo error de login, de BD, o si hice un logoff.

login.php
Código php:
Ver original
  1. <?php
  2.  
  3. $username = $_POST[username];
  4. $userpass = $_POST[userpass];
  5.  
  6. include ("includes/connect.php");
  7. $sql_identify = "SELECT userpass FROM admin WHERE username = '$username'";
  8. $sql_query = mysql_query ($sql_identify, $sql_connect);
  9.  
  10. $auth = FALSE;
  11. if ($sql_query === FALSE)
  12. {
  13.     $db_error = "yes";
  14.     header ("Location: index.php?db_error=$db_error");
  15. }
  16.  
  17. $row = mysql_fetch_row($sql_query);
  18. if ($row[0] === $userpass)
  19. {
  20.     $auth = TRUE;
  21. }
  22. else
  23. {
  24.     $auth = FALSE;
  25.     $login_failed = "yes";
  26.     header ("Location: index.php?login_failed=$login_failed");
  27. }
  28.  
  29. if ($auth === TRUE)
  30. {
  31.     setcookie(username,"$username",time()+300);
  32.     setcookie(userpass,"$userpass",time()+300);
  33.    
  34.     $_SESSION[username] = $username;
  35.     $_SESSION[userpass] = $userpass;
  36.    
  37.     header ("Location: main.php");
  38. }
  39. ?>
Aquí es donde se autentifíca el usuario. Siento que es completamente inseguro y n00b ese script... me encantaría saber como se hace DE VERDAD.

main.php y los demás sitios dentro de la sesión:
Código php:
Ver original
  1. <?php
  2. if (!isset($_SESSION[username]) and !isset($_SESSION[password]))
  3. {header ("Location: session_error.php");}
  4. else
  5. {$UID = session_id();}
  6. ?>

Aquí se identifica si hay o no sesión.
No se controlar muy bien esto, ni se ocmo trabajan correctamente las sesiones, por favor, si me pueden decir que hago mal y que debo cambiar, consejos, etc, estaría muy agradecido.
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:27.