Una forma alternativa de hacer que los datos sean accesibles en las distintas páginas de un sitio web completo es utilizar una sesión de PHP.
Una sesión crea un archivo en un directorio temporal en el servidor donde se almacenan las variables de sesión registradas y sus valores. Esta información estará disponible para todas las páginas del sitio durante esa visita.
La ubicación del archivo temporal está determinada por una configuración en el archivo php.ini llamada session.save_path. Antes de usar cualquier variable de sesión, asegúrese de haber configurado esta ruta.
Que cosas suceden cuando se inicia una sesión con php:
- PHP primero crea un identificador único para esa sesión en particular que es una cadena aleatoria de 32 números hexadecimales como 3c7foj34c3jj973hjkop2fc937e3443.
- Una cookie llamada PHPSESSID se envía automáticamente a la computadora del usuario para almacenar una cadena de identificación de sesión única.
- Un archivo se crea automáticamente en el servidor en el directorio temporal designado y lleva el nombre del identificador único con el prefijo sess_.
Cuando un script PHP quiere recuperar el valor de una variable de sesión, PHP obtiene automáticamente la cadena identificadora de sesión única de la cookie PHPSESSID y luego busca en su directorio temporal el archivo que lleva ese nombre y se puede validar comparando ambos valores.
Una sesión termina cuando el usuario cierra el navegador o termina un período de tiempo predeterminado, comúnmente de 22 minutos.
Comenzar una sesión de PHP
Una sesión de PHP se inicia fácilmente haciendo una llamada a la función session_start(). Esta función primero verifica si una sesión ya se inició y si no se inició ninguna, entonces inicia una. Se recomienda poner la llamada a session_start() al comienzo de la página.
Las variables de sesión se almacenan en un arreglo con el nombre de $_SESSION . Se puede acceder a estas variables durante la vida de una sesión.
El siguiente ejemplo inicia una sesión y luego registra una variable llamada contador que se incrementa cada vez que se visita la página durante la sesión.
Haga uso de la función isset() para verificar si la variable de sesión ya está configurada o no.
session_start();
if( isset( $_SESSION['counter'] ) ) {
$_SESSION['counter'] += 1;
}else {
$_SESSION['counter'] = 1;
}
$msg = "You have visited this page ". $_SESSION['counter'];
$msg .= "in this session.";
echo ( $msg );
Producirá el siguiente resultado:
You have visited this page 1in this session.
Destruyendo una sesión de PHP
Una sesión de PHP puede ser destruida por la función session_destroy(). Esta función no necesita ningún argumento y una sola llamada puede destruir todas las variables de sesión. Si quiere destruir una sola variable de sesión, puede usar la función unset() para desarmar una variable de sesión.
Aquí está el ejemplo para desarmar una sola variable:
unset($_SESSION['counter']);
Aquí está la llamada que destruirá todas las variables de sesión:
session_destroy();
Activando la sesión automática
No necesita llamar a la función start_session() para iniciar una sesión cuando un usuario visita su sitio si puede establecer la variable;session.auto_starten 1 en el archivo php.ini.
Sesiones sin cookies
Puede haber un caso cuando un usuario no permite almacenar cookies en su máquina. Entonces hay otro método para enviar ID de sesión al navegador.
Alternativamente, puede usar el SID constante que se define si la sesión comenzó. Si el cliente no envió una cookie de sesión apropiada, tiene el formato session_name = session_id. De lo contrario, se expande a una cadena vacía. Por lo tanto, puede incrustarlo incondicionalmente en las URL.