Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Autoryzacja: Grupy.
qbba
post
Post #1





Grupa: Zarejestrowani
Postów: 78
Pomógł: 0
Dołączył: 25.10.2002
Skąd: z kabla:)/ czewa

Ostrzeżenie: (10%)
X----


Witam biggrin.gif,

Nie mogę wymyślić najbardziej optymalnego sposobu "ograniczania" dostępu do niektórych części skryptu (narazie tylko na kartce 8) ).
Chodzi mi o to że do danej części mogą mieć dostęp np. grupy(tych grup może być kilka).
Jak sprawdzić czy użytkownik należy do grupy posiadającej dostęp?? (przypominam tych grup może być kilka, tak samo użytkownik może należeć do kilku grup).

Nie prosze o kompletny kod, wystarczy mi tylko sam zarys "opisowy" tongue.gif.
A jeszcze jedno db nie mam opracowanej wiec w tej kwesti pelna dowolność.

Z góry dzięki za pomoc smile.gif.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
FiDO
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


Jak rozumiem jesli ktos nalezy do kilku grup to uprawnienia z tych grup sa sumowane?
Wiec oczywiscie osobna tabela do grup (w niej opisane uprawnienia, np. jako typ SET), tabela z userami i tabela laczaca jedno i drugie, jesli ma byc mozliwosc kilka grup do jednego usera.
Teraz najlepiej przy logowaniu (tzn. zaraz po nim) pobierasz wszystkie jego uprawnienia i kopiujesz w jakis czytelny sposob do sesji, zeby nie odwolywac sie przy kazdej podstronie do bazy. No i teraz na kazdej z podstron chronionych prawami sprawdzasz z danych w sesji czy tne user ma prawo czy nie i dopuszczasz, badz odrzucasz.
Go to the top of the page
+Quote Post
qbba
post
Post #3





Grupa: Zarejestrowani
Postów: 78
Pomógł: 0
Dołączył: 25.10.2002
Skąd: z kabla:)/ czewa

Ostrzeżenie: (10%)
X----


Hyh chyba nie do końca rozumiesz o co mi chodzi (napisałem to troche nie dokładnie), albo ja nie rozumiem dokońca Ciebie (wysoko prawdopodobne).

Może posłuże się przykładem forum.
Nie będąc członkiem żadnej grupy moge widzieć kilka for (np. php.pl - design), ale nie mogę się w nich pisać. Będąc już członkiem grupy developerów mogę w tych forach pisać.
Będąc w grupie moderującej jedno forum (np nieistniejaca grupa php.pl - design moderators smile.gif, mogę moderować forum php.pl - design ), ale niekoniecznie mogę moderować drugie forum (np. php.pl -dev).

Mam nadzieje że teraz troche jaśniej.

PS. To tak nawaisem ma być skrypt forum, pisanego na własne potrzeby smile.gif
Go to the top of the page
+Quote Post
FiDO
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


No to nie widze przeszkod zeby do czegos takiego zastosowac to co podalem (oczywiscie bez takich uproszczen winksmiley.jpg ).
Go to the top of the page
+Quote Post
qbba
post
Post #5





Grupa: Zarejestrowani
Postów: 78
Pomógł: 0
Dołączył: 25.10.2002
Skąd: z kabla:)/ czewa

Ostrzeżenie: (10%)
X----


hmm pomysle.

A moze jeszcze jakies pomysly smile.gif.
Go to the top of the page
+Quote Post
FiDO
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


Tak.. obejrzyj sobie strukture bazy np. phpbb forum, moze podpatrzysz cos ciekawego smile.gif
Go to the top of the page
+Quote Post
DeyV
post
Post #7





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




http://forum.php.pl/viewtopic.php?t=1608

a to moj wlasny przyklad (łączący w prosty sposób parę pomysłów)
[php:1:d49ec08f35]<?php
### 12.2002 by DeyV

function dostep($wymagane=""){
if (!$wymagane){
return(TRUE); // nie ma ograniczeń dostępu
}
elseif( !isset($_SESSION['UPR'] )) {
return(FALSE); //nie zalogowany
}

for ($i=0; $i<strlen($wymagane); $i++){
if( (int)$_SESSION['UPR'][$i] < (int)$wymagane[$i] ){
return(FALSE);
}
}

return(TRUE);
}//func
?>[/php:1:d49ec08f35]
Użycie:
[php:1:d49ec08f35]<?php
dostep('007'); //czyli wymagane uprawnienia tylko z czeciej grupy, ale za to aż 7 poziom
//lub
dostep('1'); //najniższe wymagania
?>
?>[/php:1:d49ec08f35]

Wcześniej oczywiści należy pobrać i zapisać w sesji uprawnienia danego uzytkownika.
Co ciekawe - w ten sposób można łatwo tworzyć grupy użytkowników, dodawać do nich userów, i sumować ich prawa (nakładajac na siebie odpowiednie pozycje z stringa z uprawnieniami)


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
qbba
post
Post #8





Grupa: Zarejestrowani
Postów: 78
Pomógł: 0
Dołączył: 25.10.2002
Skąd: z kabla:)/ czewa

Ostrzeżenie: (10%)
X----


Pomysł fajny i ciekawy, ale na krótszą mete. Sprawdza się to do max 10 grup, przy większej ilości nie ma sensu tak tego zapisywać (już widzę ten ciąg 30 liczb dla 30 grupy :? )

Cuś jeszcze pokombinuje... moze cos wymysle tongue.gif.
Go to the top of the page
+Quote Post
DeyV
post
Post #9





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




troszkęinaczej - ilosć grup z dowolnymi prawami moze byćdowolna.
Ograniczona jest raczej ilość praw - każda pozycja w ciągu to w końcu prawa do czegoś innego.
Ale... w zamian masz możliwość dowolnego od 0 do 9 ustalanie poziomu prawa, czyli np. pozycja pierwsza to newsy, 1 - odczyt, 2 - zapis, 3 - edycja, 4 - edycja czyichś, 5 - usuwanie.
Niestety - w tym przypadku nie można ustalić by ktoś np. miał 2 i 4 (bo mając 4, masz od razu 1,2 i 3) - ale w sumie zazwyczaj tak to działa


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post

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 Aktualny czas: 19.08.2025 - 11:30