Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> System uprawnień oparty o flagi bitowe
Ultear
post 1.03.2015, 22:30:51
Post #1





Grupa: Zarejestrowani
Postów: 52
Pomógł: 3
Dołączył: 9.12.2013

Ostrzeżenie: (0%)
-----


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?

Ten post edytował Ultear 2.03.2015, 00:08:43
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 26.06.2025 - 20:26