session_start
(PHP 4, PHP 5, PHP 7, PHP 8)
session_start — Iniciar una nueva sesión o reanudar la existente
Descripción
Cuando session_start() es llamada o cuando se autoinicia una sesión,
PHP llamará a los gestores de almacenamiento de sesiones open y read. Éstos serán un gestor
de almacenamiento proporcionado por omisión o por extensiones de PHP (como SQLite o Memcached); o pueden ser
un gestor personalizado como está definido en session_set_save_handler().
La llamada de retorno read recuperará cualquier información se de sesión existente (almacenada en un formato serializado especial)
y será deserializada y usada para rellenar automáticamente la variable superglobal $_SESSION cuando la
llamada de retorno read devuelva la información de sesión guardada a la gestión de sesiones de PHP.
Para usar una sesión nominada llame a
session_name() antes de llamar a
session_start().
Cuando session.use_trans_sid
está habilidado, la función session_start() registrará
un gestor de salida interno para la reescritura de URL.
Si un usuario utiliza ob_gzhandler
o similar con
ob_start(), el orden de las funciones es importante para
la salida adecuada. Por ejemplo,
ob_gzhandler
se debe registrar antes de iniciar una sesión.
Parámetros
options
-
Si se proporciona, este array asociativo de opciones sobrescribirá las
directivas de configuración de sesiones
establecidas actualmente.
Las claves no deben incluir el prefijo session.
.
Además del conjunto habitual de directivas de configuración, también se
puede proporcionar la opción read_and_close
. Si se establece a
true
, resultará en el cierre inmediato de la sesión después de haber
sido leída, evitando así el bloqueo inncesario si los datos de la sesión
no han cambiado.
Valores devueltos
Esta función devuleve true
si una sesión fue iniciada satisfactoriamente,
si no, devuelve false
.
Ejemplos
Un ejemplo de sesión básico
Ejemplo #1 pagina1.php
<?php
// pagina1.php
session_start();
echo 'Bienvenido a la página #1';
$_SESSION['color'] = 'verde';
$_SESSION['animal'] = 'gato';
$_SESSION['instante'] = time();
// Funciona si la cookie de sesión fue aceptada
echo '<br /><a href="pagina2.php">página 2</a>';
// O quizás pasar el id de sesión, si fuera necesario
echo '<br /><a href="pagina2.php?' . SID . '">página 2</a>';
?>
Después de ver pagina1.php, la segunda página
pagina2.php contendrá mágicamente la información de la
sesión. Consulte la referencia de sesiones
para informarse sobre la propagación de
los ID de sesiones ya que explica, por ejemplo, en qué consiste la constante
SID
.
Ejemplo #2 pagina2.php
<?php
// pagina2.php
session_start();
echo 'Bienvenido a la página #2<br />';
echo $_SESSION['color']; // verde
echo $_SESSION['animal']; // gato
echo date('Y m d H:i:s', $_SESSION['instante']);
// Puede ser conveniente usar el SID aquí, como hicimos en pagina1.php
echo '<br /><a href="pagina1.php">página 1</a>';
?>
Proporcionar opciones a session_start()
Ejemplo #3 Sobrescribir el tiempo de vida de la cookie
<?php
// Esto envía una cookie persistente que dura un día day.
session_start([
'cookie_lifetime' => 86400,
]);
?>
Ejemplo #4 Leer la sesión y cerrarla
<?php
// Si sabemos que no necesitamos cambiar nada de la sesión,
// podemos simplemente leerla y cerrarla inmediatamente para evitar
// bloquear el fichero de sesión y otras páginas
session_start([
'cookie_lifetime' => 86400,
'read_and_close' => true,
]);
Notas
Nota:
Para usar sesiones basadas en cookies, session_start()
debe ser llamada antes de imprimir cualquier cosa en el navegador.
Nota:
Se recomienda el uso de zlib.output_compression
en vez de ob_gzhandler()
Nota:
Esta función envía varias cabeceras HTTP dependiendo de la
configuración. Véase session_cache_limiter() para
personalizar estas cabeceras.