>백엔드 개발 >PHP 문제 >PHP에서 여러 사용자의 비밀번호를 변경하는 함수를 작성하는 방법

PHP에서 여러 사용자의 비밀번호를 변경하는 함수를 작성하는 방법

PHPz
PHPz원래의
2023-04-04 10:41:36458검색

PHP는 동적 웹사이트 및 웹 애플리케이션 개발에 널리 사용되는 서버측 스크립팅 언어입니다. 웹 애플리케이션에서는 일반적으로 사용자 로그인, 등록, 정보 편집 등을 포함하여 여러 사용자를 관리해야 합니다. 일반적인 작업 중 하나는 여러 사용자의 비밀번호를 변경하는 것입니다. 이 기사에서는 PHP를 사용하여 여러 사용자의 비밀번호를 변경하는 함수를 작성하는 방법을 소개합니다.

1. 데이터베이스 설계

글을 작성하기 전에 먼저 데이터베이스 구조를 설계해야 합니다. 시스템에 다음 필드가 포함된 "users"라는 사용자 테이블이 있다고 가정합니다.

  • id: 사용자 ID, 자동 증가.
  • 사용자 이름: 사용자 이름.
  • 비밀번호: 비밀번호.
  • 이메일: 이메일 주소입니다.
  • role: 시스템에서 사용자 권한을 제어하는 ​​데 사용되는 사용자 역할입니다.

2. 비밀번호 변경 양식 만들기

HTML로 비밀번호 변경 양식을 만듭니다. 양식에는 다음 입력 상자가 포함되어 있습니다.

  • 이전 비밀번호: 사용자 신원을 확인하는 데 사용됩니다.
  • 새 비밀번호: 새 비밀번호를 설정하는 데 사용됩니다.
  • 비밀번호 확인: 새 비밀번호를 다시 확인하는 데 사용됩니다.

다음은 샘플 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는 다양한 용도에 적합한 강력한 서버 측 스크립팅 언어입니다. 웹 애플리케이션 개발. 이 기사에서는 PHP를 사용하여 여러 사용자의 비밀번호를 변경하는 함수를 작성하는 방법을 소개합니다. 이 기능에는 데이터베이스 연결, 사용자 인증, 데이터 탐색 및 결과 출력 등이 포함됩니다. PHP 초보자에게는 특정 어려움이 있지만 지식을 익히면 개발의 다음 단계를 위한 기초가 제공될 수 있습니다.

위 내용은 PHP에서 여러 사용자의 비밀번호를 변경하는 함수를 작성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.