sql >> Database >  >> RDS >> Mysql

Gebruikersaccountbeheer, rollen, machtigingen, authenticatie PHP en MySQL - Deel 6

Dit is deel 5 van een serie over het maken van een beheersysteem voor gebruikersaccounts in PHP. De andere delen vind je hier:deel1, deel2, deel 3, deel 4 en deel 5.

Maak een bestand met de naam editProfile.php in uw map admin/gebruikers.

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>

Nu presenteert deze pagina een formulier voor de gebruiker om hun profielinformatie te bewerken. Dit lijkt erg op de functie gebruikers bijwerken, dus we zullen dezelfde functie gebruiken die gebruikers bijwerkt om een ​​gebruikersprofiel bij te werken. Dus open userLogic.php en voeg deze if-statement toe tussen de if-statements in het bovenste gedeelte van het bestand.

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 ...

Meld u nu aan met uw beheerdersaccount dat we eerder hebben gemaakt. Nadat u bent ingelogd, klikt u op uw gebruikersnaam in de navigatiebalk en selecteert u "Profiel" in de vervolgkeuzelijst die verschijnt. Dit brengt u naar de pagina profiel bewerken. Pas de info aan en druk op de update-knop en je gebruikersaccount wordt bijgewerkt.

Wanneer u uw profiel bijwerkt, wordt een bericht weergegeven waarin staat dat u uw account succesvol heeft bijgewerkt, maar dat account wordt niet weergegeven in de tabel met gebruikersaccounts. Dat komt omdat u de momenteel ingelogde gebruiker bent, dus uw account mag niet worden weergegeven in de tabel met accounts wanneer u bent ingelogd. Het is natuurlijk persoonlijke voorkeur, als u uw account aan de tabel wilt toevoegen, kunt u de geschikte broncode.

Conclusie

Hartelijk dank voor het volgen van deze tutorial. Het was een behoorlijk lange reis voor mij, maar ik heb ervan genoten. Ik hoop dat u dat ook deed. Vanwege hoe lang deze tutorial is geweest, ben ik misschien vergeten iets toe te voegen of te verwijderen. Ik heb misschien ergens een fout gemaakt. Als je dergelijke fouten hebt ontdekt, plaats dan een opmerking in het opmerkingengedeelte zodat ik het kan oplossen.

Steun alstublieft door te delen.

Heb een geweldige dag!


  1. Hoe maak je een json-formaat met group-concat mysql?

  2. node.js mysql-fout:ECONNREFUSED

  3. EBS 12.2.5 en hoger:verkeerde uitlijning van inlogpaginaknop

  4. ABS() Voorbeelden in SQL Server