What are some best practices for implementing user authentication and session management in a PHP forum?

Issue: User authentication and session management are crucial components of a PHP forum to ensure only authorized users can access certain features and to maintain user sessions securely. Code snippet:

// Start session
session_start();

// Check if user is logged in
if (!isset($_SESSION['user_id'])) {
    header("Location: login.php");
    exit();
}

// Validate user session
if (isset($_SESSION['last_activity']) && (time() - $_SESSION['last_activity'] > 3600)) {
    session_unset();
    session_destroy();
    header("Location: login.php");
    exit();
}

// Update last activity timestamp
$_SESSION['last_activity'] = time();