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

Herramientas personales

Creative Commons License
Esta obra está bajo una licencia de Creative Commons.
Para reconocer la autoría debes poner http://www.chuidiang.com/chuwiki