Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Poziom dostępu użytkownika a opcje
Forum PHP.pl > Forum > Przedszkole
kamillo121
Witam, otóż nieco się zniechęciłem do tego forum(na ostatnie dwa tematy nikt nie odpowiedział) ale problemy na szczęście rozwiązałem sam więc jest okey smile.gif
Mam taki problem, weźmy np takie forum, użytkownik jest zalogowany ma stopień dostępu powiedzmy pierwszy, czyli może tylko dodawać tematy wiadomości i edytować swoje, moderator jakiś inny poziom administrator jakiś inny poziom itd, jako że nie mam zbytnio pomysłu jak to zorganizować pytam, Was jakbyście to rozwiązali ? przykładowo mam do wyświetlenia jakieś wiadomości i np administratorowi wyświetlają się przyciski edytuj usuń pokaż wiadomość moderatorowi edytuj pokaż wiadomość a userowi pokaż wiadomość, zatrzęsienie if'ów odpada ;]


Oczywiście liczę na sugestię, mogę być związane z :
ustalone prawa z góry czyli poziom 1ma takie prawa poziom 2 ma takie prawa itd lub każdy użytkownik ma osobne prawa smile.gif

Liczę na pomoc
//oczywiście algorytm/sposób może być podany słownie/opisowy
gigzorr
a czemu ify odpadaja?przeciez tak najprosciej, pole w tabeli status , 0 = normal uzytkownik , 1 = moderator , dwa = admin
  1.  
  2. if ($_SESSION['zalogowany'] == '0'
  3. {
  4. // normalne opcje
  5. }
  6. if ($_SESSION['zalogowany] == '1'
  7. {
  8. // opcje moderatora
  9. }


i tak dalej ..

dlaczego tak nie?
kamillo121
Odpadają takie proste ify dlatego, że za rozpoznawanie użytkownika służy klasa sesji , tam ustalam wszystko i zarządzam sesjami ustalam czy użytkownik faktycznie jest administratorem czy zwykłym userem itd.
Chodzi mi o to, ze przy wyświetlaniu np wiadomości na forum odpowiednio dostosować opcje do poziomu dostępu

A dlatego tak odpada bo np przy dodaniu rang już się nie sprawdzić biorąc pod uwagę, że id rangi też się zmienią
askone
Skoro w klasie sesji sprawdzasz typ użyszkodnika to dodaj tam metody: is_admin, is_moderator. Wtedy skoro masz już wszystko ustawione to "niestety" poprzez if sprawdzasz warunki i wyświetlasz właściwą akcję.

Innej drogi niż if'y nie widzę winksmiley.jpg

Pozdrawiam
kamillo121
No okey, ale to jest trochę bez sensu sprawdzać za każdym razem dajmy na to przy news'ach przy forum wpisach itd.
Myślałem bardziej nad tym, żeby po prostu w sesji mieć jakąś tablicę i potem tylko foreach wybierać każdą opcję

A może, ktoś powiem jak sam taki problem rozwiązał ?

//dzięki za dotychczasowe podpowiedzi
krispak
Rozwiazanie np w ten sposob i umozliwia przypisanie duzej ilosci grup:
- w bazie mamy przypisane co kto moze, czyli np. - Grupa Administrator - uprawnienia all (wiadomo), Grupa Uzytkownik - news_add, news_edit (czyli dodawanie i edycja)
- po poprawnym zalogowaniu sprawdzane jest do jakiej grupy nalezy uzytkownik i w petli tworzone sa zmienne sesyjne z danej grupy z wartoscia 1, np. $_SESSION['uprawnienia']['news_add'] = 1, $_SESSION['uprawnienia']['news_edit'] = 1
- tworzymy funkcje, ktora bedzie to sprawdzac i porownywac czy zmienna sesyjna, np $_SESSION['uprawnienia']['news_add'] jest rowna 1. Jezeli tak dajemy true jezeli nie false
- przed wywolaniem danej funcji dajemy funkcje odpowiedzialna za sprawdzanie uprawnien czyli cos w stylu
if(perm('news_add'))
{
//jezeli ma dostep to wyswietlamy zawartosc
} else {
echo "Nie posiadasz odpowiednich uprawnien";
}
kamillo121
No i o taką odpowiedź mi chodzi, wydawało mi się, że mój sposób jest nieco abstrakcyjny ale widzę, że nie tylko ja tak myślę smile.gif
Dzięki za odpowiedź, jeżeli ktoś by miał inne propozycję to proszę podanie ich snitch.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.