Sesiones PHP
Una sesión es una forma de almacenar información (en variables) para usarla en varias páginas.
A diferencia de una cookie, la información no se almacena en la computadora de los usuarios.
¿Qué es una sesión de PHP?
Cuando trabaja con una aplicación, la abre, hace algunos cambios y luego la cierra. Esto es muy parecido a una sesión. La computadora sabe quién eres. Sabe cuándo inicia la aplicación y cuándo finaliza. Pero en Internet hay un problema: el servidor web no sabe quién eres ni qué haces, porque la dirección HTTP no mantiene el estado.
Las variables de sesión resuelven este problema al almacenar información del usuario para usarla en varias páginas (por ejemplo, nombre de usuario, color favorito, etc.). De forma predeterminada, las variables de sesión duran hasta que el usuario cierra el navegador.
Entonces; Las variables de sesión contienen información sobre un solo usuario y están disponibles para todas las páginas en una aplicación.
Sugerencia: si necesita un almacenamiento permanente, es posible que desee almacenar los datos en una base de datos .
Iniciar una sesión de PHP
Se inicia una sesión con la session_start()
función.
Las variables de sesión se establecen con la variable global de PHP: $_SESSION.
Ahora, creemos una nueva página llamada "demo_session1.php". En esta página, comenzamos una nueva sesión de PHP y configuramos algunas variables de sesión:
Ejemplo
<?php
// Start the session
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Set session variables
$_SESSION["favcolor"] = "green";
$_SESSION["favanimal"] = "cat";
echo "Session variables are set.";
?>
</body>
</html>
Nota: Lasession_start()
función debe ser lo primero en su documento. Antes de cualquier etiqueta HTML.
Obtener valores de variables de sesión de PHP
A continuación, creamos otra página llamada "demo_session2.php". Desde esta página, accederemos a la información de la sesión que configuramos en la primera página ("demo_session1.php").
Tenga en cuenta que las variables de sesión no se pasan individualmente a cada página nueva, sino que se recuperan de la sesión que abrimos al principio de cada página ( session_start()
).
Observe también que todos los valores de las variables de sesión se almacenan en la variable global $_SESSION:
Ejemplo
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Echo session variables that were set on previous page
echo "Favorite color is " . $_SESSION["favcolor"] . ".<br>";
echo "Favorite animal is " . $_SESSION["favanimal"] . ".";
?>
</body>
</html>
Otra forma de mostrar todos los valores de las variables de sesión para una sesión de usuario es ejecutar el siguiente código:
Ejemplo
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
print_r($_SESSION);
?>
</body>
</html>
¿Como funciona? ¿Cómo sabe que soy yo?
La mayoría de las sesiones configuran una clave de usuario en la computadora del usuario que se parece a esto: 765487cf34ert8dede5a562e4f3a7e12. Luego, cuando se abre una sesión en otra página, escanea la computadora en busca de una clave de usuario. Si hay una coincidencia, accede a esa sesión, si no, inicia una nueva sesión.
Modificar una variable de sesión de PHP
Para cambiar una variable de sesión, simplemente sobrescríbala:
Ejemplo
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// to change a session variable, just overwrite it
$_SESSION["favcolor"] = "yellow";
print_r($_SESSION);
?>
</body>
</html>
Destruir una sesión de PHP
Para eliminar todas las variables de sesión globales y destruir la sesión, use session_unset()
y session_destroy()
:
Ejemplo
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// remove all session variables
session_unset();
// destroy the session
session_destroy();
?>
</body>
</html>