PHP で複数のユーザーのパスワードを変更する関数を記述する方法

PHPz
リリース: 2023-04-04 15:24:01
オリジナル
422 人が閲覧しました

PHP は、動的な Web サイトや Web アプリケーションの開発に広く使用されているサーバー側スクリプト言語です。 Webアプリケーションでは通常、ユーザーのログイン、登録、情報の編集など、複数のユーザーを管理する必要があります。一般的な操作の 1 つは、複数のユーザーのパスワードを変更することです。この記事では、PHP を使用して複数のユーザーのパスワードを変更する関数を作成する方法を紹介します。

1. データベース設計

記述する前に、まずデータベース構造を設計する必要があります。システムに「users」という名前のユーザー テーブルがあり、次のフィールドが含まれているとします。

  • id: ユーザー ID、自己増加します。
  • ユーザー名: ユーザー名。
  • パスワード: パスワード。
  • email: 電子メールアドレス。
  • role: ユーザーの役割。システム内のユーザー権限を制御するために使用されます。

2. パスワード変更フォームの作成

HTML でパスワード変更フォームを作成します。フォームには次の入力ボックスが含まれています:

  • 古いパスワード: ユーザー ID を確認するために使用されます。
  • 新しいパスワード: 新しいパスワードを設定するために使用されます。
  • パスワードの確認: 新しいパスワードを再度確認するために使用されます。

以下はサンプル 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. パスワード変更リクエストを処理する

次に、パスワードを処理する PHP スクリプトを作成する必要があります。変更要求。まず、フォームによって送信されたデータを取得します:

$old_password = $_POST['old_password'];
$new_password = $_POST['new_password'];
$confirm_password = $_POST['confirm_password'];
ログイン後にコピー

次に、入力データの有効性を確認します:

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

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

次に、すべてのユーザーを反復処理し、パスワードを変更し、結果を次の場所に保存します。配列:

$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
        );
    }
}
ログイン後にコピー

最後に、変更結果をユーザーに返します:

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

4. 完全なコード

以下は、マルチユーザー パスワードを変更するための完全な PHP コードです。 :

<?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. 概要

PHP は、さまざまな Web アプリケーションの開発に適した強力なサーバーサイド スクリプト言語です。この記事では、PHP を使用して複数のユーザーのパスワードを変更する関数を作成する方法を紹介します。この機能には、データベース接続、ユーザー認証、データの走査、結果の出力などが含まれます。PHP 初心者にとってはある程度の困難がありますが、知識を習得することで、次の開発ステップの基礎を提供できます。

以上がPHP で複数のユーザーのパスワードを変更する関数を記述する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!