What are some best practices for implementing user registration systems in PHP to ensure the security of online surveys or polls?

Issue: Implementing user registration systems in PHP for online surveys or polls requires proper security measures to protect user data and prevent unauthorized access. Code snippet:

<?php
// Start session
session_start();

// Connect to database
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database";
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// Function to hash password
function hashPassword($password) {
    return password_hash($password, PASSWORD_DEFAULT);
}

// Function to validate user input
function validateInput($input) {
    return htmlspecialchars(trim($input));
}

// Register user
if($_SERVER["REQUEST_METHOD"] == "POST") {
    $username = validateInput($_POST["username"]);
    $password = hashPassword($_POST["password"]);
    
    // SQL query to insert user into database
    $sql = "INSERT INTO users (username, password) VALUES ('$username', '$password')";
    
    if ($conn->query($sql) === TRUE) {
        echo "User registered successfully";
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }
}

// Close connection
$conn->close();
?>