What are the best practices for securely updating user profiles in PHP applications?

When updating user profiles in PHP applications, it is important to validate and sanitize user input to prevent SQL injection and cross-site scripting attacks. Additionally, it is recommended to use prepared statements to securely interact with the database and avoid direct concatenation of user input in SQL queries.

// Validate and sanitize user input
$first_name = filter_var($_POST['first_name'], FILTER_SANITIZE_STRING);
$last_name = filter_var($_POST['last_name'], FILTER_SANITIZE_STRING);
$email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);

// Prepare and execute SQL update statement using prepared statements
$stmt = $pdo->prepare("UPDATE users SET first_name = :first_name, last_name = :last_name, email = :email WHERE id = :user_id");
$stmt->bindParam(':first_name', $first_name);
$stmt->bindParam(':last_name', $last_name);
$stmt->bindParam(':email', $email);
$stmt->bindParam(':user_id', $_SESSION['user_id']);
$stmt->execute();