Variables de Sesion
Variables de Sesion
Variables de Sesion
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.
1 <?php
2 // start a session
3 session_start();
4
5 // manipulate session variables
?>
6
Lo importante es que la función session_start debe ser llamada al principio del script,
antes de enviar cualquier salida al navegador. De otra forma, encontrarás el infame
error Headers are already sent .
1 session.auto_start = 1
Por otro lado, si no tienes acceso al fichero php.ini, y estás usando el servidor web
Apache, puedes fijar esta variable usando el fichero .htaccess.
1 php_value session.auto_start 1
Si añades la línea anterior al fichero .htaccess, iniciará una sesión automáticamente en
tu aplicación PHP.
1 <?php
2 session_start();
3 echo session_id();
?>
4
Esto debería darte el identificador de sesión actual. La función session_id es interesante
en porque también puede recibir un argumento— un identificador de sesión. Si quieres
reemplazar el identificador de sesión generado por el sistema por el tuyo propio, puedes
suministrarlo como el primer argumento de la función session_id .
1 <?php
2 session_id(YOUR_SESSION_ID);
3 session_start();
?>
4
Es importante hacer notar que la función session_id debe estar situada antes que la
llamada a session_start cuando quieras iniciar una sesión con un identificador de sesión
personalizado.
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.
01 <?php
// start a session
02
session_start();
03
04 // initialize session variables
05
06 $_SESSION['logged_in_user_id'] = '1';
07 $_SESSION['logged_in_user_name'] = 'Tutsplus';
08
// access session variables
09 echo $_SESSION['logged_in_user_id'];
10 echo $_SESSION['logged_in_user_name'];
11 ?>
12
Como puedes ver, hemos iniciado una sesión al principio del script usando la
función session_start . A continuación, hemos inicializado un par de variables de sesión.
Finalmente, hemos accedido a dichas variables usando la super-global $_SESSION .
01
02 <?php
03 session_start();
04
if (!isset($_SESSION['count']))
05 {
06 $_SESSION['count'] = 1;
07 }
08 else
{
09 ++$_SESSION['count'];
10 }
11
12 echo $_SESSION['count'];
13 ?>
14
En el script anterior, hemos comprobado en primer lugar si la
variable $_SESSION['count'] está fijada. Si no lo está , la fijamos a 1 , en otro caso la
incrementamos en 1 . Así que si refrescas la página múltiples veces, deberías ver que ¡el
contador se incrementa en uno cada vez!
Por otro lado, si desearas borrar una variable de sesión, puedes usar la función unset ,
como se muestra en el siguiente fragmento de código.
01
<?php
02 // start a session
03 session_start();
04
05 // initialize a session variable
06 $_SESSION['logged_in_user_id'] = '1';
07
// unset a session variable
08 unset($_SESSION['logged_in_user_id']);
09 ?>
10
Por lo tanto, ya no puedes acceder a la variables $_SESSION[‘logged_in_user_id’] ya
que se eliminó por la función unset . Así es como puedes alterar la información de la
sesión.
1 <?php
2 // start a session
3 session_start();
4
5 // assume that we’ve initialized a couple of session variables in the other script already
6
7 // destroy everything in this session
session_destroy();
8 ?>
9
La función session_destroy elimina todo lo que se almacena en la sesión actual. Por lo
tanto, verás la variable $_SESSION vacía en las subsecuentes peticiones ya que la
función session_destroy eliminó todos los datos de sesión almacenados en disco.