[Bazy danych] Uprawnienia w dostępie do wybranej funkcjonalności.
Ostatnio zmodyfikowano 2013-01-22 00:12
akwes Temat założony przez niniejszego użytkownika |
[Bazy danych] Uprawnienia w dostępie do wybranej funkcjonalności. » 2013-01-21 20:51:50 Witam ;)
Zacznijmy od:
Uproszczona tabela 1.
[id][Imię] 1 Ktosik 2 Cosik 3 Czarny Pan 4. Sonea 5. Nazgul
Uproszczona tabela 2.
[nazwa][value] Panel1 xxx Panel2 yyy Panel3 zzz
I teraz chciałbym jakoś przechowywać uprawnienia osób z tabeli 1, do dostępu do każdego z paneli. Zastanawiam się w jaki sposób zrobić to mądrze. Na razie wymyśliłem dodatkową tabelę:
Uproszczona tabela 3.
[Imię][Panel1][Panel2][Panel3] Ktosik true true true Cosik false true false Sonea true false false
Jednak tutaj w momencie zmiany ilości Paneli należałoby przerobić tabelę. Zastanawiam się czy nie ma jakiegoś gotowego błyskotliwego pomysłu na taki problemik ;> ? |
|
m4tx |
» 2013-01-21 20:57:41 Ja bym zapewne zrobił jakiś system rang :) |
|
pekfos |
» 2013-01-21 21:03:15 Zależy w czym to ma być zrobione. Można użyć flag bitowych :) |
|
akwes Temat założony przez niniejszego użytkownika |
» 2013-01-21 21:10:42 @m4tx Wtedy zamiast powiązać panele z użytkownikami, trzeba powiązać je z grupami, czyli problem dalej ten sam :P
@pekfos Paneli domyślnie jest kilkanaście, a może być ich więcej.
A ma być to zrobione w MySQL, i sterowane z poziomu PHP. |
|
pekfos |
» 2013-01-21 21:15:54 A może tak? [panel][Ktosik][Cosik].. 1 true false 2 false false |
|
akwes Temat założony przez niniejszego użytkownika |
» 2013-01-21 21:18:55 Ilość użytkowników/grup też jest zmienna. Chyba nie obędzie się bez przebudowywania tabeli z prawami. |
|
pekfos |
» 2013-01-21 21:22:15 @pekfos Paneli domyślnie jest kilkanaście, a może być ich więcej. |
A może narzuć limit paneli do x, i zapisuj uprawnienia w postaci flag bitowych w x-bitowym bloku danych binarnych. ;P |
|
xevuel |
» 2013-01-21 21:27:44 Może dodać do 2 kolumnę ID, a 3 skonfigurować w ten sposób: panel_ID | user_ID 1 | 1 1 | 3 2 | 1 2 | 2 3 | 1 i potem taki pseudokod: SELECT cokolwiek FROM tabela_3 WHERE panel_ID='ID panelu do którego chce się uzyskać dostęp' AND user_ID='$_SESSION["user_ID"]' Jeśli get_num_rows == 0, Access Denied. Inna sprawa, że w przypadku dużej ilości użytkowników i paneli taka tabela może trochę dużo zajmować... |
|
« 1 » 2 |