How does session_regenerate_id() contribute to preventing session fixation in PHP?

Session fixation is a security vulnerability where an attacker sets a user's session ID before the user logs in, allowing the attacker to hijack the session. To prevent this in PHP, we can use the session_regenerate_id() function to generate a new session ID for the user after successful login. This helps to invalidate any previously set session IDs and makes it harder for attackers to fixate a session.

session_start();

// Perform user authentication here

if($authenticated) {
    session_regenerate_id(true); // Generate a new session ID
    $_SESSION['user_id'] = $user_id; // Store user ID in session
}