![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 379 Pomógł: 45 Dołączył: 30.06.2007 Ostrzeżenie: (10%) ![]() ![]() |
Chciałem się Was poradzić jak rozwiązać następujący problem:
chciałem na swojej stronie zrobić administrację dla kilku typów i liczby administratorów. Jeden administrator główny miałby możliwośc robienia wszystkiego na stronie (dodawanie zdjęć, news'y, nowe kategorie w menu itd). Dodatkowo na stronie w panelu było by miejsce na rejestrowanie nowych administratorów (oczywiście ich konto zaczęło by działac po zatwierdzeniu przez głównego administratora), ale moje pytanie jest jak zrobić żeby np. administrator_pomocniczy_1 miał możliwośc tylko dodawania zdjęć a administratr_pomocniczy_2 tylko news'ów? J ak to porządnie zorganizować? -------------------- Jeśli Ci pomogłem kliknij "Pomógł"
Jeśli Ty mi pomogłeś kliknę "Pomógł" |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Zrobic lvl np:
Super admin: 4lvl Admin: 3lvl Mod: 3lvl User: 1lvl Albo zrobic sesje z prawami np
Robic explode() dla sesji i sprawdzac za pomoca in_array() czy jest dana opcja jak jest mozna robic jak nie to error -------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Najlepszą opcją jest oparcie struktury serwisu o drzewo - czyli np. artykuły to kategoria nr 5, która może mieć dowolną liczbę podkategorii. Teraz robisz sobie tabelę:
ID kategorii||login/ID usera||podgląd||edycja||itd. - rodzaje uprawnień Zamiast rozbijać na pogląd/edycja itp. możesz zrobić flagi - np. od a do z i każda litera to inny zestaw uprawnień. Pamiętaj też o dziedziczeniu uprawnień - ktoś kto ma zablokowany dostęp do kategorii wyżej, nie może przeglądać tych niżej i odwrotnie - dobrze by było, żebyś mógł nadać np. osobie xyz uprawnienia edycji do kategorii "Artykuły" i wszystkich podkategorii - wtedy po dodaniu podkategorii uprawnienia byłyby dziedziczone i nie musiałbyś ich znowu nadawać. Da się to zrobić - ale wymaga to pracy oczywiście. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 98 Pomógł: 14 Dołączył: 13.01.2008 Skąd: Birmingham Ostrzeżenie: (0%) ![]() ![]() |
Dużo prościej (co nie znaczy wydajniej) jest dorobienie po prostu kilku komórek w bazie danych.
Tj, że zamiast standartowego "login, password, email, level" itp dodać "can_addnews, can_addphotos, can_managegallery" itp. Później tylko sprawdzać czy admin "can" i już ![]() -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 726 Pomógł: 20 Dołączył: 8.12.2005 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Najprościej to przed button czy cokolwiek co wywołuje dalsze przejście do opcji edycji dodać w kodzie.
W bazie przy użytkowniku np. dodajesz pole i jeżeli ktoś mam mieć uprawnienie do czegoś to uzupełniasz No i przy logowaniu dodajesz warunek w którym pobiera wartość z pola upr (bądź osobnym zapytaniem) i np. wrzucasz sobie wynika dla upr do sesji aby nie powtarzać zapytania. I to jest chyba najmniej inwazyjna metoda w gotowy kod jaka przychodzi mi na myśl ![]() Ale lepiej zainwestować w czas jeśli ma być to coś większego i potworzyć normalny system grupowy itd... Ten post edytował Wykrywacz 7.11.2008, 12:42:31 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Dużo prościej (co nie znaczy wydajniej) jest dorobienie po prostu kilku komórek w bazie danych. Tj, że zamiast standartowego "login, password, email, level" itp dodać "can_addnews, can_addphotos, can_managegallery" itp. Później tylko sprawdzać czy admin "can" i już ![]() Drugo spodob o ktorym napisalem to jest wlasnie to mysle ze obydwa moje sposoby sie sprawdzaja uzywalem i obydwoch i bylo GIT -------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 726 Pomógł: 20 Dołączył: 8.12.2005 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Cytat Drugo spodob o ktorym napisalem to jest wlasnie to mysle ze obydwa moje sposoby sie sprawdzaja uzywalem i obydwoch i bylo GIT Git? w czym? używaniu like? Wszystko w tym wypadku jest gitarra o ile nie musisz używać tego do więcej niż kilku opcji. Bo potem naraz tworzy ci się zylion kolumn, ify też ci się rozrastają bo zamiast zrobić np. 5 >$uprawnienia >1, to tworzysz cztery warunki z and.... to jak naprawianie auto poksyliną ;P Ten post edytował Wykrywacz 7.11.2008, 15:25:53 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 1 Dołączył: 15.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
Gdzie $_SESSION['dostep'] (pobierane jest z db z komórki 'poziom_dostepu' przy logowaniu) to: - Admin - Moderator - VIP - User |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
O boshe, ja mam tabele id_usera|action|method
I 'WHERE user_id=1 AND action = "news" AND method = "add"', później if mysql_num_rows>0 to uprawnienia są. Oczywiscie działa to w każdą stronę tj. można to przerobić na uprawnienia grup. Dać foreach($upr AS $v) { } i jak napotka w jakimś false to znaczy, ze uprawnień nie ma. :] -------------------- |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Cytat Git? w czym? używaniu like? Wszystko w tym wypadku jest gitarra o ile nie musisz używać tego do więcej niż kilku opcji. Bo potem naraz tworzy ci się zylion kolumn, ify też ci się rozrastają bo zamiast zrobić np. 5 >$uprawnienia >1, to tworzysz cztery warunki z and.... to jak naprawianie auto poksyliną ;P Czy ty w ogole wiesz co mowisz? Kod logowania nie z zbyto rozbudowany:
Samo sprawdzanie praw podczac jakiejs czynnosci wyglada tak:
Prawa w bazie wygladaja tak prawo|inne_prawo|etc... Dodaje prawa user'ow za pomoca checkbox'ow bo mam taka potrzebe w moim systemie plikow oczywiscie mozna je inaczej przypisywac Co do prawa numerycznych tak samo to wyglada jest kolumna Prawa a w niej wartosci od 1 do 4 przy kazdej czynnosci jest sprawdzenie czy $_COOKIE['prawa'] > 4 zeby robic czynnosci Administratora Oczywiscie wszystkie jest bezpieczne gdy na kazdej stronie jest sprawdzenie czy dane z cookie sa takie same jak te z bazy, i nikt nie mowi o tworzeniu kilkanascie kolumn to ty to sobie ubzdurales. Cytat Gdzie $_SESSION['dostep'] (pobierane jest z db z komórki 'poziom_dostepu' przy logowaniu) to: - Admin - Moderator - VIP - User Oczywiscie takie cos jest wolniejsze niz operacje na INT ale i tak nie widac roznicy ![]() P.S zreszta kazdy ma swoje moetody i dla niego wlasna jest zawsze najlepsza wystarczy ja dobrze zabezpieczyc a implementacja zalezy juz od czlowieka Ten post edytował marcio 7.11.2008, 16:24:07 -------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 379 Pomógł: 45 Dołączył: 30.06.2007 Ostrzeżenie: (10%) ![]() ![]() |
Widze, że jest parę odpowiedzi teraz muszę wybrać to najprostsze i najwygodniejsze...
~Pilsener czyli zrobić w bazie, czyli najwanzijeszy amdin dodaje mniej waznego i daje mu uprawnienia i dodaje sie do bazy w polu edycja wartosc 1 czyli bedzie mogl edytować, w usuwaniu 1 bedzie mogl usuwac. Dobrze rozumiem? Jeśli tak to trochę by się to skomplikowało bo trzeba by rozróżniać edycje, np. zdjęć a wiadomości itd ~Wykrywacz trochę nie rozumiem Twojego rozwiązania -------------------- Jeśli Ci pomogłem kliknij "Pomógł"
Jeśli Ty mi pomogłeś kliknę "Pomógł" |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 21:46 |