What are some best practices for securely managing user sessions and displaying personalized content in PHP applications?

Issue: To securely manage user sessions and display personalized content in PHP applications, it is important to use secure session handling techniques and properly sanitize and validate user input to prevent vulnerabilities like SQL injection and cross-site scripting attacks. PHP Code Snippet:

<?php
// Start a secure session
session_start();

// Set session variables
$_SESSION['user_id'] = 123;
$_SESSION['username'] = 'john_doe';

// Display personalized content
if(isset($_SESSION['user_id'])) {
    echo "Welcome back, " . $_SESSION['username'] . "!";
} else {
    echo "Please log in to access personalized content.";
}

// Sanitize and validate user input
$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);
$password = filter_input(INPUT_POST, 'password', FILTER_SANITIZE_STRING);

// Use prepared statements to prevent SQL injection
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username AND password = :password");
$stmt->bindParam(':username', $username);
$stmt->bindParam(':password', $password);
$stmt->execute();
$user = $stmt->fetch();

// Prevent cross-site scripting attacks
echo htmlspecialchars($_SESSION['username']);
?>