session_create_id

(PHP 7 >= 7.1.0, PHP 8)

session_create_idCrear un nuevo ID de sesión

Descripción

session_create_id(string $prefix = ""): string|false

session_create_id() se utiliza para crear un nuevo ID de sesión para la sesión actual. Esto devuelve un ID de sesión sin colisión.

Si la sesión no está activa, la verificación de colisión se omite.

El ID de sesión se crea de acuerdo con los parámetros php.ini.

Es importante utilizar el mismo ID de usuario de su servidor web para el script de la tarea de Recogida de Basura (Garbage Collection). De lo contrario, se pueden tener problemas de permisos, especialmente con los gestores de guardado de ficheros.

Parámetros

prefix

Si prefix está especificado, el nuevo ID de sesión se prefiere con prefix. No todos los caracteres están permitidos en el ID de sesión. Los caracteres entre [a-z A-Z 0-9] están permitidos. La longitud máxima es de 256 caracteres.

Valores devueltos

session_create_id() devuelve un nuevo ID de sesión sin colisión para la sesión actual. Si se utiliza sin una sesión activa, la verificación de colisión se omite. En caso de error, false se devuelve.

Ejemplos

Ejemplo #1 Ejemplo de session_create_id() con session_regenerate_id()

<?php
// Mi función de inicio de sesión soporta la gestión de marcas de tiempo
function my_session_start() {
session_start();
// No permite el uso de antiguos ID de sesión
if (!empty($_SESSION['deleted_time']) && $_SESSION['deleted_time'] < time() - 180) {
session_destroy();
session_start();
}
}

// Mi función de regeneración de ID
function my_session_regenerate_id() {
// Llamada a session_create_id() cuando la sesión está activa
// para asegurarse de que no hay colisión.
if (session_status() != PHP_SESSION_ACTIVE) {
session_start();
}
// ADVERTENCIA: Nunca utilizar cadenas confidenciales como prefijo
$newid = session_create_id('myprefix-');
// Establece la marca de tiempo de eliminación.
// Los datos de sesión no deben eliminarse inmediatamente por ciertas razones.
$_SESSION['deleted_time'] = time();
// Termina la sesión
session_commit();
// Asegúrese de aceptar los ID de sesión definidos por el usuario
// NOTA: Debe activar use_strict_mode para operaciones normales.
ini_set('session.use_strict_mode', 0);
// Definir un nuevo ID de sesión personalizado
session_id($newid);
// Inicio con un ID de sesión personalizado
session_start();
}

// Asegúrese de que use_strict_mode esté activado.
// use_strict_mode es obligatorio por razones de seguridad.
ini_set('session.use_strict_mode', 1);
my_session_start();

// El ID de sesión debe regenerarse cuando
// - Un usuario se conecta
// - Un usuario se desconecta
// - Ha transcurrido un cierto período de tiempo
my_session_regenerate_id();

// Lógica de aplicación
?>

Ver también