![]() |
![]() |
![]()
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:
Tylko, czy jest to najlepsze wyjsce? Ten post edytował Ultear 2.03.2015, 00:08:43 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
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 -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 23.06.2025 - 22:48 |