Normalisasi Basis Data
Saat ini kami menyimpan status pengguna kami
dalam tabel yang sama dengan data pengguna itu sendiri.
Namun, ini tidak benar - kami mendapatkan
tabel yang tidak ternormalisasi, karena kata-kata 'user'
dan 'admin' berulang banyak kali.
Perlu dilakukan normalisasi - kami akan memindahkan
status kami ke tabel terpisah statuses:
| id | name |
|---|---|
| 1 | user |
| 2 | admin |
Dan dalam tabel users buat kolom
status_id. Sekarang saat registrasi
kami akan menuliskan
id status dari tabel statuses ke kolom status_id:
<?php
$query = "INSERT INTO users
SET login='$login', password='$password', status_id='1'";
?>
Perubahan paling rumit terjadi saat otorisasi:
untuk mendapatkan status pengguna,
perlu melakukan LEFT JOIN:
<?php
$login = $_POST['login'];
// Dapatkan pengguna berdasarkan login dan gabungkan 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 {
}
?>
Ubah otorisasi dan registrasi Anda sesuai dengan yang dijelaskan dalam teori.
Lakukan perubahan pada kerja admin (menampilkan status pengguna, mengubah status dan sebagainya).