Maison >développement back-end >Problème PHP >Comment écrire une fonction pour changer les mots de passe de plusieurs utilisateurs en PHP

Comment écrire une fonction pour changer les mots de passe de plusieurs utilisateurs en PHP

PHPz
PHPzoriginal
2023-04-04 10:41:36457parcourir

PHP est un langage de script côté serveur largement utilisé pour développer des sites Web et des applications Web dynamiques. Dans les applications Web, il est généralement nécessaire de gérer plusieurs utilisateurs, notamment la connexion des utilisateurs, l'enregistrement, la modification des informations, etc. Une opération courante consiste à modifier les mots de passe de plusieurs utilisateurs. Cet article explique comment utiliser PHP pour écrire une fonction qui modifie les mots de passe de plusieurs utilisateurs.

1. Conception de la base de données

Avant d'écrire, nous devons d'abord concevoir la structure de la base de données. Supposons que notre système contienne une table utilisateur nommée "users", qui contient les champs suivants :

  • id : ID utilisateur, incrémentation automatique.
  • nom d'utilisateur : nom d'utilisateur.
  • mot de passe : mot de passe.
  • email : Adresse e-mail.
  • role : rôle d'utilisateur, utilisé pour contrôler les autorisations des utilisateurs dans le système.

2. Créer un formulaire de changement de mot de passe

Créez un formulaire de changement de mot de passe en HTML. Le formulaire comprend les champs de saisie suivants :

  • Ancien mot de passe : utilisé pour vérifier l'identité de l'utilisateur.
  • Nouveau mot de passe : utilisé pour définir un nouveau mot de passe.
  • Confirmer le mot de passe : utilisé pour confirmer à nouveau le nouveau mot de passe.

Ce qui suit est un exemple de code HTML :

<form action="update_password.php" method="post">
    <label for="old_password">旧密码:</label>
    <input type="password" name="old_password">
    <br>
    <label for="new_password">新密码:</label>
    <input type="password" name="new_password">
    <br>
    <label for="confirm_password">确认密码:</label>
    <input type="password" name="confirm_password">
    <br>
    <button type="submit">修改密码</button>
</form>

3. Traitez la demande de changement de mot de passe

Ensuite, nous devons écrire un script PHP pour gérer la demande de changement de mot de passe. Tout d'abord, récupérez les données soumises par le formulaire :

$old_password = $_POST['old_password'];
$new_password = $_POST['new_password'];
$confirm_password = $_POST['confirm_password'];

Ensuite, vérifiez la validité des données d'entrée :

// 判断新密码和确认密码是否一致
if ($new_password != $confirm_password) {
    die("新密码和确认密码不一致。");
}

// 验证旧密码是否正确
// 假设当前用户ID为1
$user = getUserById(1);
if (!password_verify($old_password, $user['password'])) {
    die("旧密码不正确。");
}

Ensuite, parcourez tous les utilisateurs, modifiez le mot de passe et stockez le résultat dans le tableau :

$results = array();
$users = getAllUsers();
foreach ($users as $user) {
    // 修改密码
    $new_hashed_password = password_hash($new_password, PASSWORD_DEFAULT);
    $sql = "UPDATE users SET password = '$new_hashed_password' WHERE id = " . $user['id'];
    $result = mysqli_query($conn, $sql);
    if (!$result) {
        // 修改失败
        $results[] = array(
            'user_id' => $user['id'],
            'username' => $user['username'],
            'success' => false
        );
    } else {
        // 修改成功
        $results[] = array(
            'user_id' => $user['id'],
            'username' => $user['username'],
            'success' => true
        );
    }
}

Enfin, renvoyer le résultat modifié à l'utilisateur :

foreach ($results as $result) {
    if ($result['success']) {
        echo "用户 " . $result['username'] . " 的密码已成功修改。<br>";
    } else {
        echo "用户 " . $result['username'] . " 的密码修改失败。<br>";
    }
}

4. Code complet

Ce qui suit est le code PHP complet pour modifier les mots de passe multi-utilisateurs :

<?php
// 数据库连接
$conn = mysqli_connect(&#39;localhost&#39;, &#39;username&#39;, &#39;password&#39;, &#39;database&#39;);

// 获取当前用户信息
function getUserById($user_id) {
    global $conn;
    $sql = "SELECT * FROM users WHERE id = $user_id";
    $result = mysqli_query($conn, $sql);
    $user = mysqli_fetch_assoc($result);
    return $user;
}

// 获取所有用户
function getAllUsers() {
    global $conn;
    $sql = "SELECT * FROM users";
    $result = mysqli_query($conn, $sql);
    $users = mysqli_fetch_all($result, MYSQLI_ASSOC);
    return $users;
}

// 修改密码
function updatePassword($old_password, $new_password, $confirm_password) {
    global $conn;

    // 判断新密码和确认密码是否一致
    if ($new_password != $confirm_password) {
        die("新密码和确认密码不一致。");
    }

    // 验证旧密码是否正确
    // 假设当前用户ID为1
    $user = getUserById(1);
    if (!password_verify($old_password, $user[&#39;password&#39;])) {
        die("旧密码不正确。");
    }

    $results = array();
    $users = getAllUsers();
    foreach ($users as $user) {
        // 修改密码
        $new_hashed_password = password_hash($new_password, PASSWORD_DEFAULT);
        $sql = "UPDATE users SET password = &#39;$new_hashed_password&#39; WHERE id = " . $user[&#39;id&#39;];
        $result = mysqli_query($conn, $sql);
        if (!$result) {
            // 修改失败
            $results[] = array(
                &#39;user_id&#39; => $user['id'],
                'username' => $user['username'],
                'success' => false
            );
        } else {
            // 修改成功
            $results[] = array(
                'user_id' => $user['id'],
                'username' => $user['username'],
                'success' => true
            );
        }
    }

    foreach ($results as $result) {
        if ($result['success']) {
            echo "用户 " . $result['username'] . " 的密码已成功修改。<br>";
        } else {
            echo "用户 " . $result['username'] . " 的密码修改失败。<br>";
        }
    }
}

// 处理表单提交
if (isset($_POST['old_password']) && isset($_POST['new_password']) && isset($_POST['confirm_password'])) {
    updatePassword($_POST['old_password'], $_POST['new_password'], $_POST['confirm_password']);
}
?>

5. Résumé

PHP est un puissant langage de script côté serveur adapté à divers développement d'applications web. Cet article explique comment utiliser PHP pour écrire une fonction qui modifie les mots de passe de plusieurs utilisateurs. Cette fonction implique la connexion à la base de données, l'authentification des utilisateurs, le parcours des données et la sortie des résultats, etc. Elle présente certains défis pour les débutants PHP, mais la maîtrise des connaissances peut constituer une base pour la prochaine étape de développement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn