In the context of PHP, what are the recommended methods for allowing an admin to change passwords for multiple users while maintaining security?

To allow an admin to change passwords for multiple users while maintaining security, it is recommended to create a secure form where the admin can input the new password for each user. This form should only be accessible to authenticated admins and should use proper validation and sanitization techniques to prevent any security vulnerabilities.

<?php
// Check if the user is an admin
if ($_SESSION['role'] !== 'admin') {
    // Redirect to a different page or show an error message
}

// Process form submission
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Loop through each user and update their password
    foreach ($_POST['users'] as $userId => $newPassword) {
        // Sanitize input
        $userId = filter_var($userId, FILTER_SANITIZE_NUMBER_INT);
        $newPassword = password_hash($newPassword, PASSWORD_DEFAULT);

        // Update user password in the database
        // Example SQL query: UPDATE users SET password = :newPassword WHERE id = :userId
    }

    // Show success message or redirect to a different page
}
?>

<form method="POST">
    <?php
    // Display a list of users with input fields for new passwords
    foreach ($users as $user) {
        echo '<label for="user_' . $user['id'] . '">User ' . $user['username'] . '</label>';
        echo '<input type="password" name="users[' . $user['id'] . ']" id="user_' . $user['id'] . '" required>';
    }
    ?>

    <button type="submit">Change Passwords</button>
</form>