Sesiones en PHP

De ChuWiki

A veces es necesario hacer una aplicación PHP en la que para entrar sea necesario introducir un login y un password. Una vez hecho, navegaremos por distintas páginas PHP, pero en cada una de ellas se debería comprobar si se introdujo el login y el password.

Para este tipo de cosas están las sesiones y variables de sesión de PHP. Una vez introducido un login y un password y comprobado que es correcto, se crea una sesión PHP en la que se guarda una variable de sesión en la que se indica que se ha entrado correctamente.

<?php 
if ($nombre=="usuario_valido" && $password=="password_valida")
{
   session_start();
   $autentificado="si";
   session_register("autentificado");
}
<?

El código anterior verifica que $nombre y $password corresponden a usuario y password válidos. Ambas variables se supone que vienen de un formulario que pide usuario y password. La comprobación verdadera, por supuesto, debería hacerse contra una base de datos o algún mecanismo más serio que poner el usuario válido y la password válida en el código php.

Si se valida usuario y password, se crea una sesión con session_start(). Luego, una variable cualquiera se pone con un valor cualquiera que nos sirva para saber si se ha entrado o no en sesión. En este caso, usamos $autentificado="si". Finalmente, se guarda dicha variable en la sesión, con session_register("autentificado");

Para comprobar en cualquier otra página php si se ha entrado correctamente en sesión, tendremos que poner un código como este

<?php
session_start();
if ($_SESSION['autentificado'] != "si" )
{
   // no se ha entrado, redirigir a la página de login
   header ("Location: login.php");
   exit;
}
// si se ha entrado en sesión, seguir aquí el código normal.
?>

Se pone un ''session_start()'' para cargar las variables de sesión. Se hubiésemos puesto un nombre a la sesión anteriormente, debemos usar aquí ese nombre. Una vez comenzada la sesión, se comprueba si ''$_SESSION['autentificado']'' tiene el valor ''"si"'' que le dimos anteriormente. ''"autentificado"'' es el nombre de variable que registramos en su momento.

Las sesiones podrían tener nombre, de forma que tengamos varias sesiones a la vez. Para ello se usa ''session_name()'' antes de llamar a ''session_start()''

<pre>
<?php
session_name("login");
session_start();  // Carga la sesion de nombre "login"
?>

Para hacer un equivalente a logout y salir de sesión, debemos destruir la sesión.

<?php
session_start();
session_destroy();
?>

Llamamos primero a ''session_start()'' para que se cargue la sesión. Luego a ''session_destroy()'' para destruirla, que destruirá la sesión cargada actualmente.


Enlaces externos[editar]