sql >> データベース >  >> RDS >> Mysql

ユーザーアカウント管理、役割、権限、認証PHPおよびMySQL-パート6

    これは、PHPでユーザーアカウント管理システムを作成する方法に関するシリーズのパート5です。他のパーツはここにあります:パート1、パート2、パート3、パート4、パート5。

    admin/usersフォルダーにeditProfile.phpという名前のファイルを作成します。

    editProfile.php:

    <?php include('../../config.php'); ?>
    <?php include(INCLUDE_PATH . '/logic/common_functions.php'); ?>
    <?php include(ROOT_PATH . '/admin/middleware.php'); ?>
    <?php include(ROOT_PATH . '/admin/users/userLogic.php'); ?>
    <?php
      $sql = "SELECT id, username, email, profile_picture FROM users WHERE id=?";
      $user = getSingleRecord($sql, 'i', [$_SESSION['user']['id']]);
      $roles = getMultipleRecords("SELECT * FROM roles");
    
      $user_id = $user['id'];
      $username = $user['username'];
      $email = $user['email'];
      $profile_picture = $user['profile_picture'];
    ?>
    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
        <title>UserAccounts - Edit Profile</title>
        <!-- Bootstrap CSS -->
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" />
        <!-- Custom styles -->
        <link rel="stylesheet" href="../../assets/css/style.css">
      </head>
      <body>
        <?php include(INCLUDE_PATH . "/layouts/admin_navbar.php") ?>
    
        <div class="container">
          <div class="row">
    
            <form action="editProfile.php" method="post" enctype="multipart/form-data">
              <input type="hidden" name="user_id" value="<?php echo $user_id ?>">
              <div class="col-md-8 col-md-offset-2">
                <h2 class="text-center">Edit Your Profile Info</h2>
                <hr>
                  <div class="col-md-6" style="text-align: center;">
                      <?php if (isset($profile_picture)): ?>
                        <img src="<?php echo BASE_URL . '/assets/images/' . $profile_picture; ?>" id="profile_img" style="height: 150px; border-radius: 50%" alt="">
                      <?php else: ?>
                        <img src="http://via.placeholder.com/150x150" id="profile_img" style="height: 150px; border-radius: 50%" alt="">
                      <?php endif; ?>
                      <h3>Change Profile Picture</h3>
                      <!-- hidden file input to trigger with JQuery  -->
                      <input type="file" name="profile_picture" id="profile_input" value="" style="display: none;">
                  </div>
    
                  <div class="col-md-6">
                    <div class="form-group <?php echo isset($errors['username']) ? 'has-error' : '' ?>">
                      <label class="control-label">Username</label>
                      <input type="text" name="username" value="<?php echo $username; ?>" class="form-control">
                      <?php if (isset($errors['username'])): ?>
                        <span class="help-block"><?php echo $errors['username'] ?></span>
                      <?php endif; ?>
                    </div>
                    <div class="form-group <?php echo isset($errors['email']) ? 'has-error' : '' ?>">
                      <label class="control-label">Email Address</label>
                      <input type="email" name="email" value="<?php echo $email; ?>" class="form-control">
                      <?php if (isset($errors['email'])): ?>
                        <span class="help-block"><?php echo $errors['email'] ?></span>
                      <?php endif; ?>
                    </div>
                    <div class="form-group <?php echo isset($errors['passwordOld']) ? 'has-error' : '' ?>">
                      <label class="control-label">Old Password</label>
                      <input type="password" name="passwordOld" class="form-control">
                      <?php if (isset($errors['passwordOld'])): ?>
                        <span class="help-block"><?php echo $errors['passwordOld'] ?></span>
                      <?php endif; ?>
                    </div>
                    <div class="form-group <?php echo isset($errors['password']) ? 'has-error' : '' ?>">
                      <label class="control-label">Password</label>
                      <input type="password" name="password" class="form-control">
                      <?php if (isset($errors['password'])): ?>
                        <span class="help-block"><?php echo $errors['password'] ?></span>
                      <?php endif; ?>
                    </div>
                    <div class="form-group <?php echo isset($errors['passwordConf']) ? 'has-error' : '' ?>">
                      <label class="control-label">Password confirmation</label>
                      <input type="password" name="passwordConf" class="form-control">
                      <?php if (isset($errors['passwordConf'])): ?>
                        <span class="help-block"><?php echo $errors['passwordConf'] ?></span>
                      <?php endif; ?>
                    </div>
                    <div class="form-group <?php echo isset($errors['role_id']) ? 'has-error' : '' ?>">
                      <label class="control-label">User Role</label>
                      <select class="form-control" name="role_id" >
                        <option value="" ></option>
                        <?php foreach ($roles as $role): ?>
                          <?php if ($role['name'] === $_SESSION['user']['role']): ?>
                            <option value="<?php echo $role['id'] ?>" selected><?php echo $role['name'] ?></option>
                          <?php else: ?>
                            <option value="<?php echo $role['id'] ?>"><?php echo $role['name'] ?></option>
                          <?php endif; ?>
                        <?php endforeach; ?>
                      </select>
                      <?php if (isset($errors['role_id'])): ?>
                        <span class="help-block"><?php echo $errors['role_id'] ?></span>
                      <?php endif; ?>
                    </div>
                    <div class="form-group">
                      <button type="submit" name="signup_btn" class="btn btn-danger pull-right">Delete Your Account</button>
                      <button type="submit" name="update_profile" class="btn btn-success">Update Profile</button>
                    </div>
                  </div>
              </div>
          </form>
    
          </div>
        </div>
      <?php include(INCLUDE_PATH . "/layouts/footer.php") ?>
      <script type="text/javascript" src="../../assets/js/display_profile_image.js"></script>
    

    このページには、ユーザーがプロファイル情報を編集するためのフォームが表示されます。これはユーザーの更新機能と非常によく似ているため、ユーザーを更新するのと同じ機能を使用してユーザープロファイルを更新します。したがって、userLogic.phpを開き、このifステートメントをファイルの上部にあるifステートメントの中に追加します。

    userLogic.php:

    // ... more code here
    
    if (isset($_POST['update_profile'])) {
        $user_id = $_SESSION['user']['id'];
        if (!isset($user_id)) {
          $_SESSION['success_msg'] = "You have to be logged in to update your profile";
          header("location: " . BASE_URL . "login.php");
          exit(0);
        } else {
          updateUser($user_id); // Update logged in user profile
        }
    }
    
    // ... more code here ...

    次に、前に作成した管理者アカウントでログインします。ログイン後、ナビゲーションバーのユーザー名をクリックし、表示されるドロップダウンから[プロファイル]を選択します。これにより、プロファイルの編集ページに移動します。情報を変更して更新ボタンを押すと、ユーザーアカウントが更新されます。

    プロファイルを更新すると、アカウントが正常に更新されたことを示すメッセージが表示されますが、そのアカウントはユーザーアカウントのテーブルに表示されません。これは、あなたが現在ログインしているユーザーであるため、ログイン時にアカウントがアカウントのテーブルに表示されないようにするためです。もちろん、アカウントをテーブルに追加する場合は、アカウントを変更できます。適切なソースコード。

    結論

    このチュートリアルをフォローしていただき、ありがとうございます。それは私にとってかなり長い旅でしたが、私はそれを楽しんだ。あなたもそうだったと思います。このチュートリアルが長かったため、何かを追加または削除するのを忘れた可能性があります。どこかで間違えたのかもしれません。そのようなエラーを見つけた場合は、コメントセクションにコメントをドロップしてください。修正します。

    共有してサポートしてください。

    素晴らしい一日を!


    1. 接続が閉じられると、コミットされていないトランザクションはどうなりますか?

    2. LIKE'%...%'ワイルドカードクエリのPL/SQLパフォーマンスチューニング

    3. MySQLでユーザーを作成する方法

    4. テーブル名を囲む引用符は正確に何をしますか?