How can sessions be used in PHP to track user activity and enforce time limits on page interactions?

Sessions can be used in PHP to track user activity by storing user-specific data across multiple pages. To enforce time limits on page interactions, you can set a timeout value for the session and regenerate the session ID periodically. This ensures that the session expires after a certain period of inactivity.

// Start the session
session_start();

// Set session timeout to 30 minutes
$session_timeout = 1800; // 30 minutes in seconds

// Check if session variable last_activity is set
if (isset($_SESSION['last_activity']) && (time() - $_SESSION['last_activity'] > $session_timeout)) {
    // If session is inactive for more than 30 minutes, destroy the session
    session_unset();
    session_destroy();
    session_start();
}

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

// Regenerate session ID periodically to prevent session fixation
if (!isset($_SESSION['created'])) {
    $_SESSION['created'] = time();
} elseif (time() - $_SESSION['created'] > 1800) {
    session_regenerate_id(true);
    $_SESSION['created'] = time();
}