डेटाबेस सामान्यीकरण
वर्तमान में, हम अपने उपयोगकर्ताओं की स्थिति उसी तालिका में संग्रहीत करते हैं
जहाँ स्वयं उपयोगकर्ता हैं।
हालाँकि, यह गलत है - हमारे पास एक
गैर-सामान्यीकृत तालिका है, क्योंकि शब्द '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 {
}
?>
सिद्धांत में वर्णित के अनुसार अपने प्राधिकरण और पंजीकरण को पुनः संशोधित करें।
एडमिन पैनल के काम में परिवर्तन करें (उपयोगकर्ताओं की स्थितियों का प्रदर्शन, स्थितियों में परिवर्तन और इसी तरह)।