English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
En este tutorial, aprenderá cómo usar PHP sesión para almacenar temporalmente algunos datos en el servidor.
A pesar de que puede usar cookies para almacenar datos, existe algunos problemas de seguridad. Dado que las cookies se almacenan en el ordenador del usuario, los atacantes pueden modificar fácilmente el contenido de las cookies para insertar datos potencialmente dañinos en su aplicación, lo que podría dañar su aplicación.
Además, cada vez que el navegador solicita una URL al servidor, todos los datos de cookies del sitio se envían automáticamente en la solicitud. Esto significa que si ha almacenado5Cookies, cada Cookie tiene un tamaño de4KB, el navegador necesitará subir20 KB de datos, lo que podría afectar el rendimiento de su sitio.
Puede resolver estos problemas utilizando PHP session. PHP session almacena los datos en el servidor en lugar del ordenador del usuario. En un entorno basado en sesión, cada usuario se identifica mediante un número único llamado identificador de sesión o SID. Este ID de sesión único se utiliza para enlazar a cada usuario con su información en el servidor (por ejemplo, correo electrónico, publicaciones, etc.).
Consejo:El ID de sesión se genera aleatoriamente por el motor PHP, es prácticamente imposible de adivinar. Además, ya que los datos de sesión se almacenan en el servidor, no es necesario enviarlos junto con cada solicitud del navegador.
Antes de almacenar cualquier información en las variables de sesión, debe iniciar la sesión. Para comenzar una nueva sesión, simplemente llame a la función PHP session_start(). Esto creará una nueva sesión y generará un ID de sesión único para el usuario.
El código PHP de ejemplo que se muestra a continuación solo inicia una nueva sesión.
<?php //Inicio de sesión session_start(); ?>
La función session_start() primero verifica la existencia del ID de sesión para determinar si la sesión ya existe. Si encuentra una sesión, es decir, la sesión ya se inició, establece las variables de sesión; si no, lanza una nueva sesión creando un nuevo ID de sesión.
Nota:Usted debe llamar a la función session_start() al principio de la página (antes de cualquier salida generada por el script en el navegador), al igual que cuando se usa la función setcookie() para establecer cookies.
Puede almacenar todos los datos de sesión como pares de clave-valor en el array superglobal $_SESSION[]. Puede acceder a los datos almacenados durante la vida útil de la sesión. Vea el siguiente script, que crea una nueva sesión y registra dos variables de sesión.
<?php //Iniciando sesión en curso session_start(); //Almacenar datos de sesión $_SESSION["firstname"] = "Peter"; $_SESSION["lastname"] = "Parker"; ?>
Para acceder a los datos de sesión que hemos configurado en cualquier otra página del mismo dominio en la que hayamos iniciado sesión anteriormente, simplemente llame a session_start() para volver a crear la sesión y luego pase la clave correspondiente al array $_SESSION.
<?php //Iniciando sesión en curso session_start(); //Acceder a datos de sesión echo 'Hi, ' . $_SESSION["firstname"] . ' ' . $_SESSION["lastname"]; ?>
El código PHP del ejemplo anterior produce la siguiente salida.
Hi, Peter Parker
Nota:Para acceder a los datos de sesión en la misma página, no es necesario crear una nueva sesión, ya que ya se ha iniciado en la parte superior de la página.
Si desea eliminar algunos datos de sesión, simplemente desactive la configuración de la clave correspondiente del array $_SESSION, como se muestra en el siguiente ejemplo:
<?php //Iniciar sesión session_start(); //Eliminando datos de sesión en curso if(isset($_SESSION["lastname"])){ unset($_SESSION["lastname"]); } ?>
Sin embargo, para destruir completamente la sesión, simplemente llame a la función session_destroy(). Esta función no requiere parámetros y una llamada destruirá todos los datos de sesión.
<?php //Iniciar sesión session_start(); //Destruir sesión session_destroy(); ?>
Nota:Antes de destruir la sesión utilizando la función session_destroy(), si el entorno de sesión aún no existe, debe crear primero el entorno de sesión utilizando la función session_start() para poder destruirla.
Cada sesión de PHP tiene un valor de tiempo de expiración (duración, en segundos), que determina cuánto tiempo debe mantenerse activa la sesión en ausencia de cualquier actividad del usuario. Puede ajustar este tiempo de expiración cambiando el valor de la variable session.gc_maxlifetime en el archivo de configuración de PHP (php.ini).