public function check($group_id) { $stmt = $this->pdo->query("SELECT * FROM groups WHERE group_id='$group_id'"); $this->privilages = $stmt->fetch(PDO::FETCH_ASSOC); $stmt->closeCursor(); return $this->privilages; }
Jest to funkcja zawarta w klasie, jako parametr przekazuję $_SESSION['group_id'], które przypisuję sobie podczas logowania. Po wykonaniu takiego skryptu w tablicy mam zawarte wszystkie uprawnienia dla grupy. W tabeli to wygląda mniej więcej tak:
grupa | NA | WW | EA |
===============================
Administratorzy | 1 | 1 | 1 |
--------------------------------------------------------
Moderatorzy | 1 | 0 | 1 |
--------------------------------------------------------
Użyszkodnicy | 0 | 0 | 0 |
===============================
Jak widać, nagłówki odpowiadają za poszczególne prawa. 1 logiczna ma dostęp, 0 nie ma. Przypuśćmy że chciałbym dla użytkowników ustalać menu:
if ($login->privilages['NA'] == 1) echo "<a href='#'>Nowy artykuł</a>"; // dostęp dla Adminów i Moderków if ($login->privilages['WW'] == 1) echo "<a href='#'>Wyślij wiadomość</a>"; // Dostęp tylko dla Admina if ($login->privilages['EA'] == 1) echo "<a href='#'>Edytuj artykuł</a>"; // Dostęp dla Admina i Moderka
Moje pytanie jest takie. Zakładając (przy najlepszych wiatrach), że będę miał w bazie wielu użytkowników (liczmy kilkanaście tysięcy), czy to BĘDZIE WYDAJNE ? Nie wiem jak inaczej można byłoby to rozwiązać, to rozwiązanie wydaje mi się całkiem sensowne, ale proszę o poradę bardziej doświadczonych użytkowników.
Pozdrawiam.