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

PHPz
Libérer: 2023-04-04 15:24:01
original
422 Les gens l'ont consulté

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>
Copier après la connexion

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'];
Copier après la connexion

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("旧密码不正确。");
}
Copier après la connexion

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
        );
    }
}
Copier après la connexion

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

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

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']);
}
?>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!