![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
Cześć.
Robię sobie tabele w MySQL i w niej kilka setek rekordów. Mam tabelę użytkowników. I teraz chciałbym znaleźć jakiś ciekawy mechanizm na stworzenia praw dostępu do konkretnych rekordów przez użytkoników. Może ktoś ma jakiś pomysł, bo ja główkuje i wygłówkować nie mogę (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 597 Pomógł: 30 Dołączył: 19.02.2003 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
dodatkowa kolumna okreslajaca prawo/grupe praw dostepu, lub dodatkowa tabela przechowujaca identyfikator z tej pierwotnej tabeli i prawa dostepu
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 3.09.2005 Ostrzeżenie: (0%) ![]() ![]() |
syf ma racje - mozesz np. dodac kolumne prawa i tam cyfry 0-9 gdzie kazda cyfra to inne uprawnienia, np. 0 to nic nie moze robic, 1 to dodawac posty, 2 dodawac i usuwac itp. albo prawa np. w formie 000 i rozbijasz to na kazdy znak i sprawdzasz - jesli jest 0 to nie ma prawda wykonania danej czynnosci jesli jest 1 to ma
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
Noto załóżmy, że mamy 3 użytkowników i 10 rekordów w bazie (czy to będą zamówienia, czy produkty to już nie ważne). I teraz każdy z nich ma różne uprawnienia dla różnych rekordów. Przeciesz tego nie da się zrobić za pomocą jednej kolumny :/
|
|
|
![]()
Post
#5
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
na upartego się da. Zawartośc tego pola:
typPrawa|rekord1,rekord2,rekord3;typPrawa|rekord1,rekord4,rekord6 ... gdzie: typPrawa - np liczba okreslajaca prawo | - oddziela typ prawa od przypisanych mu rekordów rekord1, rekord2, ... - id rekordów , - oddziela rekordy ; oddziela zestawy typPrawa i rekordy potem pobierasz taką kolumne i rozbijasz w php. Ale to tak na upartego i niekoniecznie optymalnie. Jak bede miał czas to moze cos innego wymysle edit: opcja 2: dodatkowa tabela, która trzyma ID_UZYTKOWNIK, ID_PRAWA, ID_REKORDU lub wersja skrócona (co do ilosci rekordów w tej tabeli): ID_UZYTKOWNIK, ID_PRAWA, ID_REKORDÓW jest to wersja skrócona, gdyż w polu ID_REKORDÓW przechowywać kilka id oczywiscie obie opcje opieraly sie na zalozeniu, ze user może miec różne prawa do jednego rekordu |
|
|
![]()
Post
#6
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
A ja bym dał tak zwaną tabelę haszującą lub jak to inni mówią łączącą.
Wtedy sytuacja wyglądałaby tak: 1. Tabela users: userId | jakieś inne pola 2. Tabela (na przykład) products: productId | jakieś tam pola 3. Tabela connections userId | productId W tabeli 3. kluczem są dwa pola (jedyne dwa pola). I pobierasz:
... masz wszystkie produktu do krórych ma prawo user 1. Banalne rozwiązanie. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
Dobre rozwiązanie z tablicą haszującą, można nawet dodać dodatkowe pole 'TypUprawnienia'.
Ale co będzie jak dodam produkt? Czyli musze oprócz tablicy produkty uzupełnić tablicę haszującą podpierając się tablicą użytkowników (aby pobrać ich ID). |
|
|
![]()
Post
#8
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Cytat(TomASS @ 2005-09-27 14:32:00) Ale co będzie jak dodam produkt? Przy dodawaniu produktu, użytkownika lub przy zmianach co do dostępu, i.t.d. musisz uaktualniać tablicę haszującą. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 11:57 |