1-Sesiones

 El manejo de sesiones es un concepto clave en PHP que permite que la información de usuario persista entre todas las páginas de un sitio web o app. En este post, aprenderás los fundamentos para manejar sesiones en PHP.


Empezaremos con una explicación de cómo funcionan las sesiones y cómo estas están relacionadas con las cookies. Después daremos un vistazo a varios fragmentos de código que demuestran cómo trabajar con sesiones. Aprenderás a crear y destruir sesiones, y a cambiar variables de sesión.


¿Qué es una Sesión en PHP?


Una sesión es un mecanismo para persistir información en  diferentes páginas web para identificar usuarios mientras estos navegan un sitio o app. Te preguntarás por qué las sesiones son necesarias en un sitio web. Para ver porqué las sesiones son necesarias, tenemos que viajar atrás y ver como esta diseñado el protocolo HTTP.


El protocolo HTTP es un protocolo sin estado, lo que significa que no hay forma de que un servidor recuerde a un usuario específico entre múltiples peticiones. Por ejemplo, cuando accedes a una página web, el servidor sólo es responsable de proveer el contenido de la página solicitada. Así que cuando accedes a otras páginas en el mismo sitio web, el servidor web interpreta cada petición separadamente, como si no estuvieran relacionadas unas con otras.


El siguiente diagrama refleja el protocolo HTTP en pocas palabras.


En este modelo, si quieres mostrar información relativa a un usuario específico, deberás autenticar al usuario en cada petición. ¡Imagina que tuvieras que introducir tu nombre de usuario y contraseña en cada página que muestre tu información de perfil!  Sí, sería incómodo y nada práctico,  y aquí es donde las sesiones entran en juego.


Una sesión permite compartir información entre las diferentes páginas de un único sitio web o app, así que ayuda a mantener el estado. Esto permite al servidor conocer que todas las peticiones se originan desde el mismo usuario, permitiendo al sitio web mostrar información y preferencias específicas de ese usuario.


Flujo de login con Sesiones y Cookies


Flujo de login con Sesiones y Cookies

Vamos a ver rápidamente un flujo de login común para un sitio web para entender qué ocurre entre bambalinas.


Un usuario accede a la página de login de un sitio web.

Después de enviar el formulario de login, un servidor en el otro extremo autentica la petición revalidando las credenciales que fueron introducidas.

Si las credenciales introducidas por el usuario son válidas, el servidor crea una nueva sesión. El servidor genera un número aleatorio único, que es llamado identificador de sesión (session id en inglés). También crea un nuevo fichero en el servidor que es usado para almacenar información específica para dicha sesión.

A continuación, el identificador de sesión es enviado de vuelta al usuario, junto con cualquier recurso que este hubiera solicitado. Entre bambalinas, el identificador de sesión es enviado en la cookie PHPSESSID en la cabecera de respuesta.

Cuando el navegador recibe la respuesta del servidor, aparece el encabezado de la cookie PHPSESSID. Si el navegador permite las cookies, guardará esta cookie PHPSESSID, que almacena el identificador de sesión que el servidor ha pasado.

El las subsecuentes peticiones, la cookie PHPSESSID es devuelta al servidor. Cuando el servidor recibe la cookie PHPSESSID, intentará inicializar una sesión con dicho identificador de sesión. Esto lo hacer cargando el fichero de sesión que fue creado previamente durante la inicialización de la sesión. Después inicializa la variable $_SESSION, que es un array super-global, con los datos almacenados en dicho fichero de sesión.

De esa forma, los datos de usuario son preservados entre múltiples peticiones y este se mantiene registrado durante toda la sesión.


El siguiente diagrama refleja cómo el protocolo HTTP trabaja con sesiones.



¿Cómo iniciar una Sesión?

En esta sección, discutiremos cómo iniciar una sesión en PHP.


Cuando quieras tratar con variables de sesión, necesitas asegurarte de que la sesión ya haya empezado. Hay varias formas de iniciar una sesión en PHP.


Usa la Función session_start.

Este será el método que verás más a menudo, cuando la sesión es iniciada mediante la función session_start.


<?php

// start a session 

session_start();

// manipulate session variables 

?>


¿Cómo obtener un identificador de Sesión?

Como discutimos anteriormente, el servidor crea un número único para cada nueva sesión. Si quieres obtener el identificador de sesión, puedes usar la función session_id, como muestra el siguiente fragmento de código:


<?php

session_start();

echo session_id();

?>


¿Cómo Crear Variables de Sesión?

En esta sección, exploraremos cómo inicializar variables de sesión en PHP.


Como discutimos anteriormente, una vez que una sesión es iniciada, el array super-global $_SESSION es inicializado con la correspondiente información de sesión. Por defecto, se inicializa con un array vacío, y puedes almacenar más información usando un par clave-valor.


Veamos el siguiente script de ejemplo que muestra cómo inicializar las variables de sesión.


<?php

// start a session 

session_start();

// initialize session variables 

$_SESSION['logged_in_user_id'] = '1';

$_SESSION['logged_in_user_name'] = 'Tutsplus';

// access session variables 

echo $_SESSION['logged_in_user_id'];

echo $_SESSION['logged_in_user_name'];

?>


¿Cómo Destruir una Sesión?

En esta sección, veremos cómo puedes destruir una sesión. En la sección anterior, discutinos la función unset, que se usa si quieres eliminar variables de sesión específicas. Por otro lado, si quieres eliminar toda la información relacionada con la sesión, puedes usar la función session_destroy.


Intentemos entender cómo funciona usando el siguiente ejemplo.


<?php

// start a session 

session_start();

// assume that we’ve initialized a couple of session variables in the other script already 

// destroy everything in this session 

session_destroy();

?>




Comentarios

Entradas populares de este blog

Filtrando por fecha

10 videojuegos gratis para aprender JavaScript en línea

reloj obs---datetime.lua