Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Prawa dostępu, jak stworzyć.
TomASS
post
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)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
sf
post
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
Go to the top of the page
+Quote Post
Alchemy_A.R.T.
post
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
Go to the top of the page
+Quote Post
TomASS
post
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 :/
Go to the top of the page
+Quote Post
nospor
post
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
Go to the top of the page
+Quote Post
mike
post
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:
  1. SELECT *
  2. FROM connections WHERE userId = 1

... masz wszystkie produktu do krórych ma prawo user 1.

Banalne rozwiązanie.
Go to the top of the page
+Quote Post
TomASS
post
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).
Go to the top of the page
+Quote Post
mike
post
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ą.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.08.2025 - 11:57