What are the best practices for handling user sessions and logins in PHP, especially when integrating password hashing for enhanced security measures?

When handling user sessions and logins in PHP, it is crucial to securely store user passwords using hashing algorithms like bcrypt to enhance security. Additionally, using session management techniques such as setting session variables and implementing proper logout functionalities can help protect user data and prevent unauthorized access.

// Start the session
session_start();

// Check if the user is already logged in
if(isset($_SESSION['user_id'])){
    // User is already logged in, redirect to dashboard or home page
    header("Location: dashboard.php");
    exit();
}

// Validate user credentials and log them in
if($_SERVER['REQUEST_METHOD'] == 'POST'){
    // Retrieve user credentials from the login form
    $username = $_POST['username'];
    $password = $_POST['password'];
    
    // Validate user credentials and retrieve user data from the database
    // Verify the hashed password using password_verify function
    // Set session variables upon successful login
    // Redirect to dashboard or home page
}