In PHP, how can the length and format variability of user ids stored in cookies be effectively managed for secure login processes?

When storing user ids in cookies for secure login processes, it is important to ensure that the length and format of the user ids are consistent to prevent potential security vulnerabilities. One way to manage this is by generating a unique session id for each user upon login and storing this session id in the cookie instead of the user id itself. This session id can then be used to retrieve the user id from a secure server-side storage.

// Generate a unique session id for the user
$session_id = bin2hex(random_bytes(16));

// Store the session id in a cookie
setcookie('session_id', $session_id, time() + 3600, '/');

// Store the user id in a secure server-side storage
$_SESSION[$session_id] = $user_id;

// Retrieve the user id using the session id
$user_id = $_SESSION[$_COOKIE['session_id']];