ডাটাবেস নরমালাইজেশন
আমরা এখন আমাদের ব্যবহারকারীদের স্ট্যাটাস
সেই টেবিলেই সংরক্ষণ করি যেখানে ব্যবহারকারীরা নিজেরাই আছেন।
যাইহোক, এটি ভুল - আমরা পেয়ে যাই
একটি নন-নরমালাইজড টেবিল, কারণ 'user'
এবং 'admin' শব্দগুলি বহুবার পুনরাবৃত্তি হয়।
নরমালাইজেশন করা প্রয়োজন - আসুন আমাদের
স্ট্যাটাসগুলি একটি আলাদা টেবিল statuses-এ স্থানান্তর করি:
| id | name |
|---|---|
| 1 | user |
| 2 | admin |
এবং users টেবিলে একটি কলাম তৈরি করি
status_id। এখন রেজিস্ট্রেশনের সময়
আমরা status_id কলামে লিখব
statuses টেবিল থেকে স্ট্যাটাসের id:
<?php
$query = "INSERT INTO users
SET login='$login', password='$password', status_id='1'";
?>
সবচেয়ে বড় পরিবর্তনগুলি ঘটবে অথরাইজেশনের সময়:
ব্যবহারকারীর স্ট্যাটাস পেতে,
একটি LEFT JOIN সম্পাদন করতে হবে:
<?php
$login = $_POST['login'];
// লগিন দ্বারা ব্যবহারকারী পান এবং স্ট্যাটাস জয়েন করুন:
$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']; // স্ট্যাটাস
} else {
}
} else {
}
?>
আপনার অথরাইজেশন এবং রেজিস্ট্রেশন থিওরিতে বর্ণিত অনুসারে পুনরায় সাজান।
অ্যাডমিন প্যানেলের কাজে পরিবর্তন আনুন (ব্যবহারকারীদের স্ট্যাটাস দেখানো, স্ট্যাটাস পরিবর্তন ইত্যাদি)।