Normalisatie van de database
Op dit moment slaan we de statussen van onze gebruikers op
in dezelfde tabel als de gebruikers zelf.
Dit is echter niet correct - we krijgen een
genormaliseerde tabel, omdat de woorden 'user'
en 'admin' vele malen herhaald worden.
Het is noodzakelijk om normalisatie uit te voeren - we halen
onze statussen eruit en plaatsen ze in een aparte tabel statuses:
| id | name |
|---|---|
| 1 | user |
| 2 | admin |
En in de tabel users maken we een kolom
status_id. Nu zullen we bij registratie
in de kolom status_id de
id van de status uit de tabel statuses opschrijven:
<?php
$query = "INSERT INTO users
SET login='$login', password='$password', status_id='1'";
?>
De meest ingrijpende wijzigingen vinden plaats bij autorisatie:
om de status van de gebruiker te krijgen,
moet een LEFT JOIN worden uitgevoerd:
<?php
$login = $_POST['login'];
// We halen de gebruiker op via login en joinen de status:
$query = "SELECT users.*, statuses.name as status FROM users
LEFT JOIN statuses
ON users.status_id=statuses.id WHERE login='$login'";
$res = mysqli_query($link, $query);
$user = mysqli_fetch_assoc($res);
if (!empty($user)) {
$hash = $user['password'];
if (password_verify($_POST['password'], $hash)) {
$_SESSION['auth'] = true;
$_SESSION['status'] = $user['status']; // status
} else {
}
} else {
}
?>
Pas uw autorisatie en registratie aan volgens de beschrijving in de theorie.
Breng wijzigingen aan in de werking van het adminpaneel (weergave van gebruikersstatussen, wijzigingen van statussen en zo verder).