|
$_SESSION["nombre_usuario"] . " (" . $_SESSION["nombre_cliente"] . ")"; } ?>
Fichero "cerrarsesion.php" para cerrar sesión en PHP con session_destroy
Definición de la función session_destroy de PHP
destruye toda la información asociada con la sesión actual. No destruye ninguna de las variables globales asociadas con la sesión, ni destruye la cookie de sesión. Para volver a utilizar las variables de sesión se debe llamar a session_start().
Para destruir la sesión completamente, como desconectar al usuario, el id de sesión también debe ser destruido. Si se usa una cookie para propagar el id de sesión (comportamiento por defecto), entonces la cookie de sesión se debe borrar. setcookie() se puede usar para eso.
Uso de la función session_destroy para cerrar la sesión en PHP
Crearemos un fichero de texto plano sin formato con el siguiente contenido, guardándolo con el nombre "cerrarsesion.php" y lo subiremos a nuestro sitio FTP:
A continuación explicamos cada línea del fichero:
- session_start: función ya explicada más arriba, puesto que la sesión ya está iniciada, no hará nada.
- unset($_SESSION["nombre_usuario"]) yunset($_SESSION["nombre_cliente"]): liberarán las variables de sesión registradas, en el ejemplo liberamos dos variables de sesión: nombre_usuario y nombre_cliente. Este método es equivalente al método ya obsoleto session_unregister (en desuso a partir de la versión 5.3.0 de PHP).
- session_destroy: libera la sesión actual, elimina cualquier dato de la sesión.
- header("Location: index.php"): tras liberar la sesión con los métodos anteriores, esta línea vuelve a mostrar la página "index.php" de nuestro sitio web.
$_SESSION = array();
Nota 2: si queremos eliminar todos los datos de las cookies guardadas podemos ejecutar este código PHP:
if (ini_get("session.use_cookies")) { $params = session_get_cookie_params(); setcookie(session_name(), '', time() - 42000, $params["path"], $params["domain"], $params["secure"], $params["httponly"]); }
Aviso importante sobre las sesiones en PHP aquí descritas
Conviene dejar claro que el método de sesiones explicado en este artículo no es el más profesional y seguro. Existen muchas más funciones para el tratamiento de las sesiones en PHP como son:
- session_cache_expire: devuelve la caducidad de la caché actual.
- session_cache_limiter: bbtener y/o establecer el limitador de caché actual.
- session_commit: alias de session_write_close.
- session_decode: decodifica la información de sesión desde una cadena.
- session_destroy: destruye toda la información registrada de una sesión.
- session_encode: codifica la información de la sesión actual como una cadena.
- session_get_cookie_params: obtener los parámetros de la cookie de sesión.
- session_id: obtener y/o establecer el id de sesión actual.
- session_is_registered: averiguar si una variable global está registrada en una sesión.
- session_module_name: obtiene y/o establece el módulo de sesión actual.
- session_name: obtener y/o establecer el nombre de la sesión actual.
- session_regenerate_id: actualiza el id de sesión actual con uno generado más reciente.
- session_register: registrar una o más variables globales con la sesión actual.
- session_save_path: obtener y/o establecer la ruta de almacenamiento de la sesión actual.
- session_set_cookie_params: establecer los parámetros de la cookie de sesión.
- session_set_save_handler: establece funciones de almacenamiento de sesiones a nivel de usuario.
- session_start: inicializar información de sesión.
- session_unregister: deja de registrar una variable global de la sesión actual.
- session_unset: libera todas las variables de sesión.
- session_write_close: escribir información de sesión y finalizar la sesión.
Bien usadas todas estas funciones (o las necesarias) podrán dotar a nuestro sitio web de mayor robustez y seguridad. Por supuesto, lo explicado aquí no es lo más seguro pero sí, tal vez, lo más sencillo de implementar.
Por ejemplo, podríamos usar la función session_id para obtener el ID de sesión del usuario actual y guardarlo en una tabla de una base de datos, de esta forma podríamos saber cuántos usuarios han iniciado sesión en nuestro sitio web, qué usuarios y en qué día y hora:
$session_id = session_id(); $sql = "INSERT INTO sesiones (user_id, session_id) VALUES ('" . $userid . "', '" . $session_id . "')'"; $resultado_sql = mysql_query($sql);
No hay comentarios:
Publicar un comentario