session_start

(PHP 4, PHP 5, PHP 7, PHP 8)

session_startInicia una nueva sesión o reanuda una sesión existente

Descripción

session_start(array $options = []): bool

session_start() crea una sesión o restaura la encontrada en el servidor, mediante el identificador de sesión pasado en una petición GET, POST o mediante una cookie.

Cuando session_start() es llamada o cuando una sesión comienza automáticamente, PHP va a llamar a los gestores de apertura y lectura. Estos son gestores internos proporcionados por PHP (como archivos, SQLite o Memcached) o bien gestores personalizados definidos mediante session_set_save_handler(). La función de lectura va a recuperar toda sesión existente (almacenada en forma serializada) y va a deserializar los datos para poblar $_SESSION.

Para utilizar una sesión nombrada, debe llamarse a session_name() antes de llamar a session_start().

Cuando session.use_trans_sid está activada, la función session_start() registrará un gestor interno de salida para la reescritura de URLs.

Si un usuario utiliza ob_gzhandler o el equivalente ob_start(), el orden de llamada de las funciones es importante para una salida correcta. Por ejemplo, ob_gzhandler debe ser registrado antes de iniciar la sesión.

Parámetros

options

Si se proporciona, se trata de un array asociativo de opciones que reemplazará las directivas de configuración de sesión actualmente definidas. Las claves no deben incluir el prefijo session..

Además del conjunto normal de directivas de configuración, una opción read_and_close puede también ser proporcionada. Si la valor es definido como true, esto provoca el cierre inmediato de la sesión después de la lectura, lo que evita cualquier bloqueo innecesario si los datos de sesión no son modificados.

Valores devueltos

Devuelve true si una sesión pudo ser iniciada con éxito, y false en caso contrario.

Historial de cambios

Versión Descripción
7.1.0 session_start() ahora devuelve false y ya no inicializa $_SESSION cuando no ha podido iniciar la sesión.

Ejemplos

Un ejemplo de sesión básica

Ejemplo #1 page1.php

<?php
// page1.php

session_start();

echo
'Bienvenido a la página número 1';

$_SESSION['favcolor'] = 'green';
$_SESSION['animal'] = 'cat';
$_SESSION['time'] = time();

// Funciona si la cookie ha sido aceptada
echo '<br /><a href="page2.php">página 2</a>';

// O bien, indicando explícitamente el identificador de sesión
echo '<br /><a href="page2.php?' . SID . '">página 2</a>';
?>

Después de ver la página page1.php con un navegador, la segunda página page2.php (cuyo código sigue) va a mostrar mágicamente los datos de sesión. Consulte la referencia sobre las sesiones para obtener información sobre la propagación de identificadores de sesión, y el uso de la constante SID.

Ejemplo #2 Recuperación de la sesión: page2.php

<?php
// page2.php

session_start();

echo
'Bienvenido a la página número 2<br />';

echo
$_SESSION['favcolor']; // green
echo $_SESSION['animal']; // cat
echo date('Y m d H:i:s', $_SESSION['time']);

// Podría utilizarse la constante SID aquí, al igual que en la página page1.php
echo '<br /><a href="page1.php">página 1</a>';
?>

Proporcionar opciones a session_start()

Ejemplo #3 Reemplazo de la duración del cookie

<?php
// Esto envía un cookie persistente que dura un día.
session_start([
'cookie_lifetime' => 86400,
]);
?>

Ejemplo #4 Lectura de la sesión y cierre

<?php
// Si sabemos que no necesitamos cambiar
// nada en la sesión, podemos simplemente
// leer y cerrar de inmediato para evitar bloquear
// el archivo de sesión y bloquear otras páginas
session_start([
'cookie_lifetime' => 86400,
'read_and_close' => true,
]);

Notas

Nota:

Para utilizar sesiones basadas en cookies, session_start() debe ser llamada antes de mostrar cualquier cosa en el navegador.

Nota:

El uso de zlib.output_compression es recomendado, en lugar de ob_gzhandler().

Nota:

Esta función va a emitir varios encabezados HTTP, dependiendo de la configuración. Consulte session_cache_limiter() para personalizar estos encabezados.

Ver también