Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menulis fungsi untuk menukar kata laluan berbilang pengguna dalam PHP

Bagaimana untuk menulis fungsi untuk menukar kata laluan berbilang pengguna dalam PHP

PHPz
PHPzasal
2023-04-04 10:41:36422semak imbas

PHP ialah bahasa skrip sebelah pelayan yang digunakan secara meluas yang digunakan untuk membangunkan tapak web dinamik dan aplikasi web. Dalam aplikasi web, biasanya diperlukan untuk mengurus berbilang pengguna, termasuk log masuk pengguna, pendaftaran, penyuntingan maklumat, dsb. Satu operasi biasa ialah menukar kata laluan berbilang pengguna. Artikel ini akan memperkenalkan cara menggunakan PHP untuk menulis fungsi yang menukar kata laluan berbilang pengguna.

1. Reka bentuk pangkalan data

Sebelum menulis, kita perlu mereka bentuk struktur pangkalan data terlebih dahulu. Andaikan sistem kami mengandungi jadual pengguna bernama "pengguna", yang mengandungi medan berikut:

  • id: ID pengguna, meningkat sendiri.
  • nama pengguna: nama pengguna.
  • kata laluan: Kata laluan.
  • e-mel: Alamat e-mel.
  • peranan: Peranan pengguna, digunakan untuk mengawal kebenaran pengguna dalam sistem.

2. Cipta borang tukar kata laluan

Buat borang tukar kata laluan dalam HTML. Borang tersebut termasuk kotak input berikut:

  • Kata laluan lama: digunakan untuk mengesahkan identiti pengguna.
  • Kata Laluan Baharu: Digunakan untuk menetapkan kata laluan baharu.
  • Sahkan kata laluan: Digunakan untuk mengesahkan kata laluan baharu sekali lagi.

Berikut ialah contoh kod 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 Proses permintaan penukaran kata laluan

Seterusnya, kita perlu menulis skrip PHP untuk dikendalikan. permintaan tukar kata laluan. Mula-mula, dapatkan data yang diserahkan melalui borang:

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

Kemudian, sahkan kesahihan data input:

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

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

Seterusnya, lintasi semua pengguna, tukar kata laluan dan simpan keputusan dalam Dalam tatasusunan:

$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
        );
    }
}

Akhir sekali, kembalikan hasil pengubahsuaian kepada pengguna:

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

4. Kod lengkap

Berikut ialah PHP yang lengkap kod untuk mengubah suai kata laluan berbilang pengguna :

<?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 Ringkasan

PHP ialah bahasa skrip bahagian pelayan yang berkuasa yang sesuai untuk pembangunan pelbagai aplikasi web. Artikel ini memperkenalkan cara menggunakan PHP untuk menulis fungsi yang menukar kata laluan berbilang pengguna. Fungsi ini melibatkan sambungan pangkalan data, pengesahan pengguna, traversal data dan output hasil, dsb. Ia mempunyai cabaran tertentu untuk pemula PHP, tetapi menguasai pengetahuan boleh menyediakan asas untuk langkah pembangunan seterusnya.

Atas ialah kandungan terperinci Bagaimana untuk menulis fungsi untuk menukar kata laluan berbilang pengguna dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn