What are the three common methods of storing session IDs in PHP, and what are the potential pitfalls associated with each method?

Issue: Storing session IDs securely in PHP is crucial to prevent session hijacking and unauthorized access to user data. Three common methods of storing session IDs in PHP are using cookies, URL parameters, and hidden form fields. Each method has its own potential pitfalls, such as cookie theft, URL parameter exposure, and form field manipulation. Code snippet:

// Method 1: Storing session IDs in cookies
session_start();
$_SESSION['user_id'] = 123;
// Set the session ID cookie to be secure and HttpOnly
session_set_cookie_params([
    'secure' => true,
    'httponly' => true
]);

// Method 2: Storing session IDs in URL parameters
session_start();
$_SESSION['user_id'] = 123;
// Use URL rewriting to prevent session ID exposure in URLs
ini_set('session.use_trans_sid', false);

// Method 3: Storing session IDs in hidden form fields
session_start();
$_SESSION['user_id'] = 123;
// Validate the session ID on form submission to prevent manipulation
if ($_POST['session_id'] !== session_id()) {
    die('Invalid session ID');
}