Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

उपयोगकर्ता खाता प्रबंधन, भूमिकाएं, अनुमतियां, प्रमाणीकरण PHP और MySQL - भाग 4

यह PHP में उपयोगकर्ता खाता प्रबंधन प्रणाली बनाने के तरीके पर एक श्रृंखला का भाग 4 है। आप अन्य भागों को यहाँ पा सकते हैं:भाग 1, भाग 2, भाग 3।

अब तक हमने सार्वजनिक क्षेत्र के लिए उपयोगकर्ता पंजीकरण और लॉगिन को कवर किया है। एक व्यवस्थापक उपयोगकर्ता अभी भी लॉग इन कर सकता है लेकिन हमने अभी तक व्यवस्थापक उपयोगकर्ता खाते बनाने पर काम नहीं किया है। साथ ही, यदि आप ब्राउज़र पर केवल http://localhost/user-accounts/admin/dashboard.php दर्ज करते हैं, तो आप व्यवस्थापक उपयोगकर्ता के बिना व्यवस्थापक अनुभाग तक पहुंच सकते हैं। लेकिन हम जल्द ही वह सब ठीक कर देंगे।

इस भाग में, हम व्यवस्थापक उपयोगकर्ता खाते बना रहे हैं, अपडेट कर रहे हैं। उपयोगकर्ता खाते को अपडेट करने से पहले हम यह भी सत्यापित करेंगे कि पुराना पासवर्ड मेल खाता है।

व्यवस्थापक/उपयोगकर्ता फ़ोल्डर के अंदर, ये 3 फ़ाइलें बनाएं:

  1. userForm.php:उपयोगकर्ता खाते बनाने और संपादित करने के लिए फ़ॉर्म शामिल है।
  2. userList.php:सिस्टम के सभी व्यवस्थापकीय उपयोगकर्ताओं को सूचीबद्ध करता है।
  3. userLogic.php:MVC (मॉडल-व्यू-कंट्रोलर) की भाषा में, हम इसे उपयोगकर्ता नियंत्रक के रूप में संदर्भित कर सकते हैं। इसमें तर्क शामिल हैं जैसे कि प्रपत्र से उपयोगकर्ता की जानकारी प्राप्त करना, इसे डेटाबेस में सहेजना, इसे फिर से प्राप्त करना, इसमें हेरफेर करना, और इसी तरह।

चलिए userForm.php से शुरू करते हैं। इसे खोलें और इस कोड को इसमें पेस्ट करें।

userForm.php:

<?php include('../../config.php'); ?>
<?php include(INCLUDE_PATH . '/logic/common_functions.php') ?>
<?php include(ROOT_PATH . '/admin/users/userLogic.php'); ?>
<?php $roles = getAllRoles(); ?>

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>UserAccounts - Create Admin user Account</title>
    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" />
    <!-- Custome styles -->
    <link rel="stylesheet" href="../../assets/css/style.css">
  </head>
  <body>
    <?php include(INCLUDE_PATH . "/layouts/admin_navbar.php") ?>
    <div class="container" style="margin-bottom: 150px;">
      <div class="row">
        <div class="col-md-4 col-md-offset-4">
          <a href="userList.php" class="btn btn-primary" style="margin-bottom: 5px;">
            <span class="glyphicon glyphicon-chevron-left"></span>
            Users
          </a>
          <br>

          <form class="form" action="userForm.php" method="post" enctype="multipart/form-data">
            <?php if ($isEditing === true ): ?>
              <h2 class="text-center">Update Admin user</h2>
            <?php else: ?>
              <h2 class="text-center">Create Admin user</h2>
            <?php endif; ?>
            <hr>
            <!-- if editting user, we need that user's id -->
            <?php if ($isEditing === true): ?>
              <input type="hidden" name="user_id" value="<?php echo $user_id ?>">
            <?php endif; ?>
            <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>
            <?php if ($isEditing === true ): ?>
              <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>
            <?php endif; ?>
            <div class="form-group <?php echo isset($errors['password']) ? 'has-error' : '' ?>">
              <label class="control-label">Your 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['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['id'] === $role_id): ?>
                    <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" style="text-align: center;">
              <?php if (!empty($profile_picture)): ?>
                <img src="<?php echo BASE_URL . '/assets/images/' . $profile_picture; ?>" id="profile_img" style="height: 100px; border-radius: 50%" alt="">
              <?php else: ?>
                <img src="http://via.placeholder.com/150x150" id="profile_img" style="height: 100px; border-radius: 50%" alt="">
              <?php endif; ?>
              <input type="file" name="profile_picture" id="profile_input" value="" style="display: none;">
            </div>
            <div class="form-group">
              <?php if ($isEditing === true): ?>
                <button type="submit" name="update_user" class="btn btn-success btn-block btn-lg">Update user</button>
              <?php else: ?>
                <button type="submit" name="save_user" class="btn btn-success btn-block btn-lg">Save user</button>
              <?php endif; ?>
            </div>
          </form>
        </div>
      </div>
    </div>
  <?php include(INCLUDE_PATH . "/layouts/footer.php") ?>
<script type="text/javascript" src="../../assets/js/display_profile_image.js"></script>

यदि हम इस पृष्ठ को अपने ब्राउज़र में http://localhost/user-accounts/admin/users/userForm.php पर खोलते हैं, तो हमें एक त्रुटि संदेश दिखाई देता है जो कहता है कि हम एक अपरिभाषित विधि getAllRoles() कह रहे हैं। हमें इस पद्धति की आवश्यकता है क्योंकि, एक व्यवस्थापक उपयोगकर्ता बनाने के लिए, हमें इस उपयोगकर्ता को असाइन करने के लिए डेटाबेस में सभी भूमिकाओं की सूची से एक भूमिका का चयन करने की आवश्यकता है। तो हम डेटाबेस से सभी भूमिकाएं प्राप्त करेंगे और उन्हें फॉर्म में एक विकल्प-चयन फ़ील्ड पर पॉप्युलेट करेंगे।

हम इस विधि को userLogic.php फ़ाइल के अंदर बनाएंगे। इस तरह:

userLogic.php:

<?php
  // variable declaration. These variables will be used in the user form
  $user_id = 0;
  $role_id = NULL;
  $username = "";
  $email = "";
  $password = "";
  $passwordConf = "";
  $profile_picture = "";
  $isEditing = false;
  $users = array();
  $errors = array();

  function getAllRoles(){
    global $conn;
    $sql = "SELECT id, name FROM roles";
    $stmt = $conn->prepare($sql);
    $stmt->execute();
    $result = $stmt->get_result();
    $roles = $result->fetch_all(MYSQLI_ASSOC);
    return $roles;
  }

अपने ब्राउज़र पर ताज़ा करें अब आप देखेंगे कि त्रुटि दूर हो गई है और हमारा फॉर्म अब पृष्ठ के केंद्र में साफ है। बढ़िया!

यदि आप फ़ॉर्म पर रोल ड्रॉपडाउन पर क्लिक करते हैं, तो आप देखेंगे कि अभी तक कोई भूमिका नहीं है। ऐसा इसलिए है क्योंकि हमने डेटाबेस में रोल्स टेबल बनाई थी लेकिन हमने इसमें रोल्स नहीं जोड़े थे। PHPMyAdmin या आपके पास मौजूद किसी भी MySQL क्लाइंट का उपयोग करते हुए, हमारे डेटाबेस में भूमिका तालिका में निम्नलिखित तीन भूमिकाएँ जोड़ें:व्यवस्थापक, संपादक और लेखक।

या आप तीनों भूमिकाओं को एक साथ सम्मिलित करने के लिए बस इस SQL ​​​​इन्सर्ट कमांड को चला सकते हैं:

INSERT INTO `roles`(`id`, `name`, `description`) 
VALUES  (1, 'Admin', 'Has authority of users and roles and permissions.' ), 
		(2, 'Author', 'Has full authority of own posts'), 
		(3, 'Editor', 'Has full authority over all posts')

यदि आप पृष्ठ को पुनः लोड करते हैं, तो ये भूमिकाएँ अब आपकी भूमिका चयन फ़ील्ड में उपलब्ध हो जाएँगी।

इस बिंदु पर, हम अभी तक एक उपयोगकर्ता नहीं बना सकते हैं। लेकिन फॉर्म पूरी तरह तैयार है। जो कुछ बचा है वह कोड है जो फ़ॉर्म द्वारा सबमिट किए गए मान प्राप्त करता है। हम इस कोड को userLogic.php फाइल में रखेंगे। इसे एक बार फिर से खोलें और उपयोगकर्ता को बनाने, अपडेट करने, संपादित करने और हटाने के लिए आवश्यक शेष कोड जोड़ें।

userLogic.php:

// ... variables declaration is up here ...
// ACTION: update user
if (isset($_POST['update_user'])) { // if user clicked update_user button ...
    $user_id = $_POST['user_id'];
    updateUser($user_id);
}
// ACTION: Save User
if (isset($_POST['save_user'])) {  // if user clicked save_user button ...
    saveUser();
}
// ACTION: fetch user for editting
if (isset($_GET["edit_user"])) {
  $user_id = $_GET["edit_user"];
  editUser($user_id);
}
// ACTION: Delete user
if (isset($_GET['delete_user'])) {
  $user_id = $_GET['delete_user'];
  deleteUser($user_id);
}

function updateUser($user_id) {
  global $conn, $errors, $username, $role_id, $email, $isEditing;
  $errors = validateUser($_POST, ['update_user', 'update_profile']);

  // receive all input values from the form
  $username = $_POST['username'];
  $email = $_POST['email'];
  $password = password_hash($_POST['password'], PASSWORD_DEFAULT); //encrypt the password before saving in the database
  $profile_picture = uploadProfilePicture();
  if (count($errors) === 0) {
    if (isset($_POST['role_id'])) {
      $role_id = $_POST['role_id'];
    }
    $sql = "UPDATE users SET username=?, role_id=?, email=?, password=?, profile_picture=? WHERE id=?";
    $result = modifyRecord($sql, 'sisssi', [$username, $role_id, $email, $password, $profile_picture, $user_id]);

    if ($result) {
      $_SESSION['success_msg'] = "User account successfully updated";
      header("location: " . BASE_URL . "admin/users/userList.php");
      exit(0);
    }
  } else {
    // continue editting if there were errors
    $isEditing = true;
  }
}
// Save user to database
function saveUser(){
  global $conn, $errors, $username, $role_id, $email, $isEditing;
  $errors = validateUser($_POST, ['save_user']);
  // receive all input values from the form
  $username = $_POST['username'];
  $email = $_POST['email'];
  $password = password_hash($_POST['password'], PASSWORD_DEFAULT); //encrypt the password before saving in the database
  $profile_picture = uploadProfilePicture(); // upload profile picture and return the picture name
  if (count($errors) === 0) {
    if (isset($_POST['role_id'])) {
      $role_id = $_POST['role_id'];
    }
    $sql = "INSERT INTO users SET username=?, role_id=?, email=?, password=?, profile_picture=?";
    $result = modifyRecord($sql, 'sisss', [$username, $role_id, $email, $password, $profile_picture]);

    if($result){
      $_SESSION['success_msg'] = "User account created successfully";
      header("location: " . BASE_URL . "admin/users/userList.php");
      exit(0);
    } else {
      $_SESSION['error_msg'] = "Something went wrong. Could not save user in Database";
    }
  }
}
function getAdminUsers(){
  global $conn;
  // for every user, select a user role name from roles table, and then id, role_id and username from user table
  // where the role_id on user table matches the id on roles table
  $sql = "SELECT r.name as role, u.id, u.role_id, u.username
          FROM users u
          LEFT JOIN roles r ON u.role_id=r.id
          WHERE role_id IS NOT NULL AND u.id != ?";

  $users = getMultipleRecords($sql, 'i', [$_SESSION['user']['id']]);
  return $users;
}

function editUser($user_id){
  global $conn, $user_id, $role_id, $username, $email, $isEditing, $profile_picture;

  $sql = "SELECT * FROM users WHERE id=?";
  $user = getSingleRecord($sql, 'i', [$user_id]);

  $user_id = $user['id'];
  $role_id = $user['role_id'];
  $username = $user['username'];
  $profile_picture = $user['profile_picture'];
  $email = $user['email'];
  $isEditing = true;
}
function deleteUser($user_id) {
  global $conn;
  $sql = "DELETE FROM users WHERE id=?";
  $result = modifyRecord($sql, 'i', [$user_id]);

  if ($result) {
    $_SESSION['success_msg'] = "User trashed!!";
    header("location: " . BASE_URL . "admin/users/userList.php");
    exit(0);
  }
}

बिना फॉर्म भरे, 'सेव यूजर' बटन पर क्लिक करें और आप देखेंगे कि फॉर्म पर वेलिडेशन मैसेज दिखाई दे रहे हैं। हम उसी वैलिडेटयूज़र () फ़ंक्शन का उपयोग कर रहे हैं जिसे हमने कुछ समय पहले परिभाषित किया था। तो आप देखते हैं कि हमारे कोड को इस तरह के तरीकों में कैसे रिफैक्टर करना हमें कोड को दोहराने से बचाता है। यहां तक ​​कि इमेज अपलोड को भी अपलोडप्रोफाइलइमेज () द्वारा नियंत्रित किया जाता है, जिसे पिछले ट्यूटोरियल में से एक में परिभाषित किया गया था।

आइए अपना पहला एडमिन यूजर बनाएं। फॉर्म भरें और 'सेव यूजर' बटन पर क्लिक करें। यह हमारे व्यवस्थापक उपयोगकर्ता को डेटाबेस में सहेजता है और userList.php पृष्ठ पर रीडायरेक्ट करता है जो अभी के लिए खाली है।

userList.php फ़ाइल डेटाबेस में उपलब्ध व्यवस्थापक उपयोगकर्ताओं को सूचीबद्ध करने वाली है। तो चलिए उसके लिए कोड लिखते हैं।

userList.php:

<?php include('../../config.php') ?>
<?php include(ROOT_PATH . '/admin/users/userLogic.php') ?>
<?php
  $adminUsers = getAdminUsers();
?>
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Admin Area - Users </title>
  <!-- Bootstrap CSS -->
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" />
  <!-- Custome styles -->
  <link rel="stylesheet" href="../../static/css/style.css">
</head>
<body>
  <?php include(INCLUDE_PATH . "/layouts/admin_navbar.php") ?>
  <div class="col-md-8 col-md-offset-2">
    <a href="userForm.php" class="btn btn-success">
      <span class="glyphicon glyphicon-plus"></span>
      Create new user
    </a>
    <hr>
    <h1 class="text-center">Admin Users</h1>
    <br />
    <?php if (isset($users)): ?>
      <table class="table table-bordered">
        <thead>
          <tr>
            <th>N</th>
            <th>Username</th>
            <th>Role</th>
            <th colspan="2" class="text-center">Action</th>
          </tr>
        </thead>
        <tbody>
          <?php foreach ($adminUsers as $key => $value): ?>
            <tr>
              <td><?php echo $key + 1; ?></td>
              <td><?php echo $value['username'] ?></td>
              <td><?php echo $value['role']; ?></td>
              <td class="text-center">
                <a href="<?php echo BASE_URL ?>admin/users/userForm.php?edit_user=<?php echo $value['id'] ?>" class="btn btn-sm btn-success">
                  <span class="glyphicon glyphicon-pencil"></span>
                </a>
              </td>
              <td class="text-center">
                <a href="<?php echo BASE_URL ?>admin/users/userForm.php?delete_user=<?php echo $value['id'] ?>" class="btn btn-sm btn-danger">
                  <span class="glyphicon glyphicon-trash"></span>
                </a>
              </td>
            </tr>
          <?php endforeach; ?>
        </tbody>
      </table>
    <?php else: ?>
      <h2 class="text-center">No users in database</h2>
    <?php endif; ?>
  </div>
  <?php include(INCLUDE_PATH . "/layouts/footer.php") ?>
</body>
</html>

कुछ समय पहले की हमारी userLogic.php फ़ाइल में, हमने getAdminUsers() नामक एक विधि शामिल की थी। यह विधि प्रदर्शित होने वाले डेटाबेस से सभी व्यवस्थापक उपयोगकर्ताओं का चयन करती है।

ब्राउज़र और वॉयला पर बस userList.php पेज को रीफ्रेश करें! हमारे पास हमारा पहला व्यवस्थापक उपयोगकर्ता एक टेबल पर सूचीबद्ध है। उपयोगकर्ता को संपादित करने के लिए पेंसिल आइकन वाले हरे बटन पर क्लिक करें। आप उपयोगकर्ता को हटाने के लिए ट्रैश आइकन वाले लाल बटन पर भी क्लिक कर सकते हैं।

उपयोगकर्ता भूमिकाएं

अब हम अपना उपयोगकर्ता बना सकते हैं और उन्हें भूमिकाएँ सौंप सकते हैं लेकिन क्या होगा यदि हम सिस्टम में एक और भूमिका जोड़ना चाहते हैं? जब भी हम भूमिका बनाना चाहते हैं, हम सीधे हमारे डेटाबेस पर कमांड चलाने पर भरोसा नहीं कर सकते हैं, है ना? आइए इस अनुभाग को भूमिकाओं को बनाने, अद्यतन करने और हटाने के साथ समाप्त करें।

व्यवस्थापक/भूमिका फ़ोल्डर पर नेविगेट करें और तीन फ़ाइलें बनाएं:roleForm.php, roleList.php, और roleLogic.php। (उपयोगकर्ता फ़ोल्डर के समान, नहीं?)

roleForm.php:

<?php include('../../config.php') ?>
<?php include(ROOT_PATH . '/includes/logic/common_functions.php') ?>
<?php include(ROOT_PATH . '/admin/roles/roleLogic.php') ?>
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Admin - Create new role </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="../../static/css/style.css">
</head>
<body>
  <?php include(INCLUDE_PATH . "/layouts/admin_navbar.php") ?>
  <div class="col-md-8 col-md-offset-2">
      <a href="roleList.php" class="btn btn-primary">
        <span class="glyphicon glyphicon-chevron-left"></span>
        Roles
      </a>
      <hr>
      <form class="form" action="roleForm.php" method="post">
        <?php if ($isEditting === true): ?>
          <h1 class="text-center">Update Role</h1>
        <?php else: ?>
          <h1 class="text-center">Create Role</h1>
        <?php endif; ?>
        <br />

        <?php if ($isEditting === true): ?>
          <input type="hidden" name="role_id" value="<?php echo $role_id ?>">
        <?php endif; ?>
        <div class="form-group <?php echo isset($errors['name']) ? 'has-error': '' ?>">
          <label class="control-label">Role name</label>
          <input type="text" name="name" value="<?php echo $name; ?>" class="form-control">
          <?php if (isset($errors['name'])): ?>
            <span class="help-block"><?php echo $errors['name'] ?></span>
          <?php endif; ?>
        </div>
        <div class="form-group <?php echo isset($errors['description']) ? 'has-error': '' ?>">
          <label class="control-label">Description</label>
          <textarea name="description" value="<?php echo $description; ?>"  rows="3" cols="10" class="form-control"><?php echo $description; ?></textarea>
          <?php if (isset($errors['description'])): ?>
            <span class="help-block"><?php echo $errors['description'] ?></span>
          <?php endif; ?>
        </div>
        <div class="form-group">
          <?php if ($isEditting === true): ?>
            <button type="submit" name="update_role" class="btn btn-primary">Update Role</button>
          <?php else: ?>
            <button type="submit" name="save_role" class="btn btn-success">Save Role</button>
          <?php endif; ?>
        </div>
      </form>
  </div>
  <?php include(INCLUDE_PATH . "/layouts/footer.php") ?>
</body>
</html>

यह बहुत कुछ वैसा ही है जैसा हमने उपयोगकर्ताओं के मामले में किया था, इसलिए मैं यहाँ अधिक व्याख्या नहीं करूँगा। अब हम roleLogic.php पर आगे बढ़ते हैं जहां हम भूमिकाएं बनाने, अपडेट करने और हटाने के लिए आवश्यक कोड लिखते हैं।

roleLogic.php:

<?php
  $role_id = 0;
  $name = "";
  $description = "";
  $isEditting = false;
  $roles = array();
  $errors = array();

  // ACTION: update role
  if (isset($_POST['update_role'])) {
      $role_id = $_POST['role_id'];
      updateRole($role_id);
  }
  // ACTION: Save Role
  if (isset($_POST['save_role'])) {
      saveRole();
  }
  // ACTION: fetch role for editting
  if (isset($_GET["edit_role"])) {
    $role_id = $_GET['edit_role'];
    editRole($role_id);
  }
  // ACTION: Delete role
  if (isset($_GET['delete_role'])) {
    $role_id = $_GET['delete_role'];
    deleteRole($role_id);
  }
  // Save role to database
  function saveRole(){
    global $conn, $errors, $name, $description;
    $errors = validateRole($_POST, ['save_role']);
    if (count($errors) === 0) {
       // receive form values
       $name = $_POST['name'];
       $description = $_POST['description'];
       $sql = "INSERT INTO roles SET name=?, description=?";
       $result = modifyRecord($sql, 'ss', [$name, $description]);

       if ($result) {
         $_SESSION['success_msg'] = "Role created successfully";
         header("location: " . BASE_URL . "admin/roles/roleList.php");
         exit(0);
       } else {
         $_SESSION['error_msg'] = "Something went wrong. Could not save role in Database";
       }
    }
  }
  function updateRole($role_id){
    global $conn, $errors, $name, $isEditting; // pull in global form variables into function
    $errors = validateRole($_POST, ['update_role']); // validate form
    if (count($errors) === 0) {
      // receive form values
      $name = $_POST['name'];
      $description = $_POST['description'];
      $sql = "UPDATE roles SET name=?, description=? WHERE id=?";
      $result = modifyRecord($sql, 'ssi', [$name, $description, $role_id]);

      if ($result) {
        $_SESSION['success_msg'] = "Role successfully updated";
        $isEditting = false;
        header("location: " . BASE_URL . "admin/roles/roleList.php");
        exit(0);
      } else {
        $_SESSION['error_msg'] = "Something went wrong. Could not save role in Database";
      }
    }
  }
  function editRole($role_id){
    global $conn, $name, $description, $isEditting;
    $sql = "SELECT * FROM roles WHERE id=? LIMIT 1";
    $role = getSingleRecord($sql, 'i', [$role_id]);

    $role_id = $role['id'];
    $name = $role['name'];
    $description = $role['description'];
    $isEditting = true;
  }
  function deleteRole($role_id) {
    global $conn;
    $sql = "DELETE FROM roles WHERE id=?";
    $result = modifyRecord($sql, 'i', [$role_id]);
    if ($result) {
      $_SESSION['success_msg'] = "Role trashed!!";
      header("location: " . BASE_URL . "admin/roles/roleList.php");
      exit(0);
    }
  }
  function getAllRoles(){
    global $conn;
    $sql = "SELECT id, name FROM roles";
    $roles = getMultipleRecords($sql);
    return $roles;
  }

लेकिन जब आप 'सेव रोल' बटन पर क्लिक करते हैं, तो यह एक अपरिभाषित वैलिडेटरोल () विधि के बारे में चेतावनी देता है। यूज़र्स के लिए वैलिडेटयूज़र () की तरह, हम इस वैलिडेट रोल () मेथड को अपनी common_functions.php फाइल में जोड़ेंगे। तो फ़ाइल खोलें और इस फ़ंक्शन को इसके नीचे जोड़ें।

common_functions.php:

// ... other functions up here ...

// Accept a post object, validates post and return an array with the error messages
function validateRole($role, $ignoreFields) {
    global $conn;
    $errors = [];
    foreach ($role as $key => $value) {
      if (in_array($key, $ignoreFields)) {
          continue;
      }
      if (empty($role[$key])) {
        $errors[$key] = "This field is required";
      }
    }
    return $errors;
}

भूमिका सहेजें बटन पर फिर से क्लिक करें और आप त्रुटि संदेशों को प्रदर्शित करते हुए देखें।

इसके बाद roleList.php फ़ाइल है।

roleList.php:

<?php include('../../config.php') ?>
<?php include(ROOT_PATH . '/admin/roles/roleLogic.php') ?>
<?php
  $roles = getAllRoles();
?>
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Admin Area - User Roles </title>
  <!-- Bootstrap CSS -->
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" />
  <!-- Custome styles -->
  <link rel="stylesheet" href="../../static/css/style.css">
</head>
<body>
  <?php include(INCLUDE_PATH . "/layouts/admin_navbar.php") ?>
  <div class="col-md-8 col-md-offset-2">
    <a href="roleForm.php" class="btn btn-success">
      <span class="glyphicon glyphicon-plus"></span>
      Create new role
    </a>
    <hr>
    <h1 class="text-center">User Roles</h1>
    <br />
    <?php if (isset($roles)): ?>
      <table class="table table-bordered">
        <thead>
          <tr>
            <th>N</th>
            <th>Role name</th>
            <th colspan="3" class="text-center">Action</th>
          </tr>
        </thead>
        <tbody>
          <?php foreach ($roles as $key => $value): ?>
            <tr>
              <td><?php echo $key + 1; ?></td>
              <td><?php echo $value['name'] ?></td>
              <td class="text-center">
                <a href="<?php echo BASE_URL ?>admin/roles/assignPermissions.php?assign_permissions=<?php echo $value['id'] ?>" class="btn btn-sm btn-info">
                  permissions
                </a>
              </td>
              <td class="text-center">
                <a href="<?php echo BASE_URL ?>admin/roles/roleForm.php?edit_role=<?php echo $value['id'] ?>" class="btn btn-sm btn-success">
                  <span class="glyphicon glyphicon-pencil"></span>
                </a>
              </td>
              <td class="text-center">
                <a href="<?php echo BASE_URL ?>admin/roles/roleForm.php?delete_role=<?php echo $value['id'] ?>" class="btn btn-sm btn-danger">
                  <span class="glyphicon glyphicon-trash"></span>
                </a>
              </td>
            </tr>
          <?php endforeach; ?>
        </tbody>
      </table>
    <?php else: ?>
      <h2 class="text-center">No roles in database</h2>
    <?php endif; ?>
  </div>
  <?php include(INCLUDE_PATH . "/layouts/footer.php") ?>
</body>
</html>

अपने ब्राउज़र पर, http://localhost/user-accounts/admin/roles/roleList.php पर जाएं। और अब हम भूमिकाएं भी बना सकते हैं, संपादित कर सकते हैं, अपडेट कर सकते हैं और हटा भी सकते हैं।

एक बार फिर से अनुसरण करने के लिए धन्यवाद। उम्मीद है, मैं आपको अगले भाग में देखूंगा जहां हम अनुमतियों और उपयोगकर्ता प्रोफ़ाइल संपादन पर काम करते हैं।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डेटा को यूनिकोड में हिंदी भाषा में कैसे स्टोर करें?

  2. MySQL दो तिथियों के बीच कार्य दिवसों की संख्या खोजने के लिए कार्य करता है

  3. क्या मुझे MySQL में डेटाटाइम या टाइमस्टैम्प डेटा प्रकार का उपयोग करना चाहिए?

  4. एक्सटेंशन mysqli गुम है, phpmyadmin काम नहीं करता है

  5. पिछले 12 महीनों की MySQL मासिक बिक्री बिना बिक्री वाले महीनों सहित