(PHP 7 >= 7.1.0)
session_create_id — Crear un nuevo ID de sesión
$prefix
] ) : stringsession_create_id() se emplea para crear nuevos ID de sesión para la sesión actual. Devuelve los ID de sesión libres de colisiones.
Si la sesión no está activa, la comprobación de colisiones se omite.
El ID de sesión se crea de acuerdo a los ajustes de php.ini.
Es importante utilizar el mismo ID de usuario del servidor web para las tareas de recolección de basura. De lo contrario, se podrían tener problemas de permisos especialmente con manejadores de guardado de ficheros.
prefix
Si se especifica prefix
, el nuevo ID de sesión
se prefijará con prefix
. No todos los
caracteres están permitidos con el ID de sesión. Están permitidos
los caracteres del rango a-z A-Z 0-9 , (coma) y -
(menos).
session_create_id() devuelve el nuevo ID de sesión libre de colisiones para la sesión actual. Si se emplea sin una sesión activa, se omite la comprobación de colisiones.
Ejemplo #1 Ejemplo de session_create_id() con session_regenerate_id()
<?php
// Mi función de inicio de sesión admite la gestión de marcas de tiempo
function mi_inicio_de_sesión() {
session_start();
// No permitir usar un ID de sesión demasiado antiguo
if (!empty($_SESSION['deleted_time']) && $_SESSION['deleted_time'] < time() - 180) {
session_destroy();
session_start();
}
}
// Mi función de regeneración de ID de sesión
function mi_regeneración_de_id_de_sesión() {
// Llamar a session_create_id() mientras la sesión está activa para
// asegurarse de que no haya colisiones.
if (session_status() != PHP_SESSION_ACTIVE) {
session_start();
}
// ADVERTENCIA: ¡No utilizar nunca cadenas confidenciales para el prefijo!
$nuevo_id = session_create_id('miprefijo-');
// Establecer la marca de tiempo de borrado. Los datos de la sesión no deben eliminarse inmediatamente.
$_SESSION['deleted_time'] = time();
// Finalizar la sesión
session_commit();
// Asegurarse de aceptar ID de sesiones definidas por el usuario
// NOTA: Se debe habilitar 'use_strict_mode' para operaciones normales.
ini_set('session.use_strict_mode', 0);
// Establecer el nuevo ID de sesión personalizado
session_id($nuevo_id);
// Empezar la sesión con el ID de sesión personalizado
session_start();
}
// Asegurarse de que 'use_strict_mode' está habilitado.
// 'use_strict_mode' es obligatorio por razones de seguridad.
ini_set('session.use_strict_mode', 1);
mi_inicio_de_sesión();
// EL ID de sesión debe regenerarse cuando
// - El usuario inicia la sesión
// - El usuario cierra la sesión
// - Ha transcurrido un cierto perido de tiempo
mi_regeneración_de_id_de_sesión();
// Escribir código útil
?>