2010-11-06 23 views
6

Estoy creando una función de inicio de sesión en mi sitio web, y estoy pensando en regenerar el ID de sesión en cada página para hacer las cosas más seguras.PHP "Session_regenerate_id" y Autenticación de usuarios

He leído la información de PHP sobre s de regenerate_id pero las publicaciones en la página de PHP son bastante diferentes de la información que proporcionan sobre session_regenerate_id.

Podrían explicar a alguien a estas dos preguntas:

  • ¿Es necesario copiar los datos de la sesión de edad en el recién generada, o se hace esto de forma automática? Los ejemplos de código son muy apreciados ...

  • ¿Cómo puedo verificar si un usuario ya inició sesión? ¿Qué debo almacenar en la variable de sesión y cómo? Los ejemplos de código son muy apreciadas ...

Gracias

Respuesta

7

Calling session_regenerate_id() en cada página puede ser un poco de exageración, dependiendo de su configuración. La función se usa para evitar el secuestro de la sesión y se debe usar siempre que un usuario eleve su nivel de privilegio (como iniciar sesión). Por lo general, cambiaría a una conexión https una vez que el usuario haya iniciado sesión, lo que significa que solo necesita llamar a session_regenerate_id() una vez ya que la nueva cookie se transmitirá a través de una conexión segura y no se podrá escuchar a escondidas. Sin embargo, si no tiene un certificado SSL en su servidor, la regeneración de la cookie de sesión en cada página podría ser una buena opción.

Cuando llame a session_regenerate_id() no necesita copiar los datos de la sesión. Esto es todo cuidado por PHP. Básicamente, se crean un nuevo token de sesión y una cookie, los datos de la sesión se copian en el almacén de sesión para asociarlos con el nuevo token y si se pasa como verdadero argumento a la función, se borra el archivo de datos de sesión anterior en el disco.

Lo que almacene en la sesión para indicar si un usuario ha iniciado sesión depende de usted. A menudo tienda sólo un simple valor booleano para indicar si está conectado, junto con otros valores de la celebración de nombres de usuario, nombre, etc. A continuación, comprobar si alguien está conectado es tan simple como esto:

<?php 
    if ($_SESSION['logged_in']){ 
     //User logged in 
    } else { 
     //User not logged in 
    } 
?> 

HTH.

Cuestiones relacionadas