Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: System uprawnień oparty o flagi bitowe
Forum PHP.pl > Forum > PHP
Ultear
Witam,

Ostatnio zacząłem się dokształcać w zakresie operacji na bitach i chciałem w ramach treningu napisać prosty system uprawnień użytkowników oparty na flagach bitowych.

Posiadam 2 tabele w bazie danych, w skrócie:

Users:
id int UNSIGNED NOT NULL auto_increment,
group_id int UNSIGNED NOT NULL,
username varchar(32) NOT NULL

Groups:
id int UNSIGNED NOT NULL auto_increment
name varchar(32) NOT NULL,
permissions tinyint(8) NOT NULL


Do tabeli groups wprowadziłem dane:
// Unactivated - 00000000
// User - 01000111
// VIP - 11111001

1 - Opcja 1
2 - Opcja 2
4 - Opcja 3
8 - Opcja 4
16 - Opcja 5
32 - Opcja 6
64 - Opcja 7
128 - Opcja 8

Jak sprawdzić, czy user z grupą "VIP" ma włączoną opcję 4, a user z opcją User ma opcję 7? Dla różnych grup będzie inna suma bitów w systemie dziesiętnym reprezentująca daną opcję, od jakiej strony do tego podejść?

Z góry dziękuje za pomoc

@EDIT

Wynalazłem sposób poprzez shiftowanie bitów tzn:

  1. if(00000111 & (1<<0)){
  2. echo 'dostep przyznany';
  3. }


Tylko, czy jest to najlepsze wyjsce?
nospor
Jak chcesz sprawdzic, czy user ma opcje 3 to robisz poprostu:

if (($zmBitowa & 4) == 4) echo 'Tak, ten koles ma opcje 3';
http://nospor.pl/opcje-dwuwartosciowe-przechowywanie.html
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.