En php las sesiones son ficheros de texto guardados en disco, los cuales están en el directorio indicado en el fichero 'PHP.INI': en el apartado [Session] hay un atributo que es 'session.save_path' y que contiene, como valor, el directorio utilizado para almacenar los datos de la sesión. Cada sesión tiene un nombre de fichero temporal semejante a: '<PATH SESIÓN>/sess_<ID>' … El formato de éste es:
- Nombre de la variable
- Tipo de la variable
- s - string (cadena)
- b - boolean (0/1)
- i - integer (entero)
- a - array (matriz)
- d - float ()
…
(entre otros)
- Tamaño del valor
- "Valor"
nombre|Tipo:Tamaño:"Valor";
nombre|Tipo:Tamaño:"Valor";
…
EJEMPLO
FICHERO: sess_74e9c92b92e60b5a2a5c2de075135ff1
array|a:2:{s:8:"element1";s:4:"key1";s:8:"element2";s:4:"key2";}integer|i:100;string|s:15:"Cadena de texto";char|s:1:"a";bool|b:1;float|d:123.000323;
::::CADENA ESTRUCTURADA::::
array|a:2:{
s:8:"element1";
s:4:"key1";
s:8:"element2";
s:4:"key2";
}
integer|i:100;
string|s:15:"Cadena de texto";
char|s:1:"a";
bool|b:1;
float|d:123.000323;FICHERO: sesiones.php
<?php
session_start ();
// Registra las variables de sesión si no están registradas
session_register ("array", "integer", "string", "char", "bool", "float");
$array = array ("element1" => "key1", "element2" => "key2");
$integer = (int)100;
$string = "Cadena de texto";
$char = "a";
$bool = true;
$float = (float)123.000323;
?>
PHP utiliza dos métodos para identificar la sesión, mediante una cookie con un identificador único de la sesión, o bien mediante un parámetro: SID, el cual contiene éste identificador. Si el navegador no dispone de cookies éste último será el método utilizado por Php; si está activado ([Session]->session.use_trans_sid), Php reescribirá los enlaces de tipo:
- a:href
- area:href
- frame:src
- input:src
- form:fakeentry
Estos valores son los que hay por defecto en el apartado [Session]-> del fichero PHP.INI, "url_rewriter.tags"…
A diferencia de las cookies, las cuales guardan la información en el cliente, los valores, se guardan en el servidor, de forma inaccesible al cliente. Por ejemplo; puedes tener una variable en la sesión actual que sea 'logado', con el valor 'true', ésta información será accesible a todas las páginas PHP, y cada sesión tendrá sus propios valores, (cada explorador abierto en cada ordenador tiene su sesión propia (siempre y cuando se abra)), con ésto tienes la certeza de estar logado, ya que si fueran cookies el cliente podría manipular el valor y acceder a ellas, otra forma de saber si se está logado es meter en las cookies dos valores con el nombre del usuario y el password, y verificar cada vez estos valores,… a parte de que es mucho mas rápido obtenerlos de la sesión, esta información pasaría constantemente de una forma poco segura y además se quedaría guardado en el cliente, y otras personas podrían verlo.
Las funciones de soporte de sesiones aparecieron a partir de PHP 4, sin embargo, para las personas que utilicen PHP 3, pueden recurrir a librerías hechas por ellos o a la librería PHPLIB.
A partir de la versión 4.0 están disponibles, almenos que en la configuración se defina lo contrario.