What are the best practices for handling session management in PHP to ensure security and usability?

To ensure security and usability in session management in PHP, it is important to follow best practices such as using secure cookies, regenerating session IDs, setting session cookie parameters, and validating session data.

// Start session
session_start();

// Set session cookie parameters for security
session_set_cookie_params([
    'lifetime' => 0,
    'path' => '/',
    'domain' => 'example.com',
    'secure' => true,
    'httponly' => true
]);

// Regenerate session ID to prevent session fixation attacks
session_regenerate_id(true);

// Validate session data before using it
if(isset($_SESSION['user_id'])) {
    $user_id = $_SESSION['user_id'];
    // Use $user_id safely
}