# session_create_id

(PHP 7 >= 7.1.0, PHP 8)

session_create_id — Crear un nuevo ID de sesión

### Descripción

session_create_id(string `$prefix` = ?): string

session_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.

### Parámetros

`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)`.

### Valores devueltos

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.

### Ejemplos

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
?>`

### Ver también

- session_regenerate_id() - Actualiza el id de sesión actual con uno generado más reciente
- session_start() - Iniciar una nueva sesión o reanudar la existente
- session.use_strict_mode
- SessionHandler::create_sid() - Devuelve un nuevo ID de sesión