What are the best practices for handling user input and storing data in a PHP application?

When handling user input in a PHP application, it is important to sanitize and validate the data to prevent security vulnerabilities such as SQL injection or cross-site scripting attacks. Storing data securely in a database also requires using prepared statements to prevent SQL injection. Additionally, encrypting sensitive data before storing it can add an extra layer of security.

// Sanitize and validate user input
$username = filter_var($_POST['username'], FILTER_SANITIZE_STRING);
$email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL);

// Store data securely in a database using prepared statements
$stmt = $pdo->prepare("INSERT INTO users (username, email) VALUES (:username, :email)");
$stmt->bindParam(':username', $username);
$stmt->bindParam(':email', $email);
$stmt->execute();

// Encrypt sensitive data before storing it
$password = password_hash($_POST['password'], PASSWORD_DEFAULT);