How can we improve the security of a voting script in PHP to prevent manipulation and fraudulent activities?

Issue: To improve the security of a voting script in PHP, we can implement measures such as input validation, using prepared statements to prevent SQL injection, and implementing CSRF tokens to prevent cross-site request forgery.

// Validate input data
if(isset($_POST['vote']) && !empty($_POST['vote'])){
    $vote = $_POST['vote'];
    
    // Use prepared statements to prevent SQL injection
    $stmt = $pdo->prepare("INSERT INTO votes (vote) VALUES (:vote)");
    $stmt->bindParam(':vote', $vote);
    $stmt->execute();
    
    // Generate and validate CSRF token
    if(isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']){
        // Process the vote
    } else {
        // Invalid CSRF token
        die("CSRF token validation failed.");
    }
} else {
    // Invalid input data
    die("Invalid input data.");
}