System Logowania z uprawnieniami

Strony Internetowe - gotowe skrypty, problemy, bazy danych, PHP, HTML, CSS i inne.
Awatar użytkownika
Radim89
Użytkownik
Użytkownik
Posty: 143
Rejestracja: 12 maja 2007, o 16:31

System Logowania z uprawnieniami

Post autor: Radim89 » 16 sty 2011, o 23:49

Jak zrobic prosty skrypt systemu logowania sie z uprawnieniami dla uzytkownika .

Jakies rady ? Pomoc ?
Awatar użytkownika
noname
Użytkownik
Użytkownik
Posty: 1540
Rejestracja: 24 sie 2008, o 11:13

Re: System Logowania z uprawnieniami

Post autor: noname » 20 sty 2011, o 23:10

PHP, Python, Ruby?

Domniemam, że PHP...

Łopatologicznie:

W bazie tworzysz tabelę users. Zależy jak zaawansowanie chcesz to zrobić (na ile pozwalają Ci Twoje umiejętności). Przypuszczam, że SQLowymi JOINami nie potrafisz się posługiwać... A wypadałoby. W tabeli users standardowo: ID (AUTO_INCREMENT), username, password (maksymalna ilość znaków zależna od wykorzystywanego szyfrowania - md5, sha1, sha2...).

Najodpowiedniej byłoby stworzyć jeszcze dwie tabele:

- rights - tutaj ID (AUTO_INCREMENT), nazwa uprawnienia
- user_rights - tutaj ID (AUTO_INCREMENT), user_id(id użytkownika z danym uprawnieniem), right_id (id uprawnienia)

Wystarczyłaby tabela user_rights, a tam nazwane ciągiem znaków dane uprawnienia, aczkolwiek zaproponowana przeze mnie opcja jest bardziej elastyczna (umożliwia zdefiniowanie osobno uprawnień - stworzenie Panelu Administratora, który to umożliwia, a DODANIE danemu użytkownikowi jakiegoś uprawnienia).

Przykładowa baza wyglądałaby tak:

users:
ID | USERNAME | PASSWORD
1 | admin | d0be2dc421be4fcd0172e5afceea3970e2f3d940
2 | jurek | 342g5325324k5j23g51f23f4gh13f5j3f5h325fg
3 | staszek | j345kj32g632j46j2345jf1f51f261k3jg53g4kj

rights:
ID | NAZWA_UPRAWNIENIA
1 | all
2 | news_dodawanie
3 | news_kasowanie
4 | news_edycja
5 | artykul_dodawanie
...

user_rights:
ID | ID_USERA | ID_UPRAWNIENIA
1 | 1 | 1 (czyli użytkownik admin posiadający uprawnienie ALL)
2 | 2 | 2 (jurek mogący dodawać newsy)
3 | 2 | 3 (jurek mogący usuwać newsy)
4 | 2 | 4 (jurek mogący edytować newsy)
5 | 3 | 2 (staszek mogący dodawać newsy)
6 | 3 | 5 (staszek mogący dodawać artykuły)
...

Logowanie polega na porównaniu podanych przez użytkownika danych (login, hasło) z danymi w tabeli users.

Później już tylko pobierasz ID zalogowanego usera porównujesz z ID usera z tabeli user_rights, jeżeli jest tam dodany, oznacza, że jakieś uprawnienia user ma.

Załóżmy, że dany skrypt to dodawanie newsów. Czyli wymaga sprawdzenia, czy dany user posiada uprawnienie o ID 2. Więc zapytaniem SQL wyciągasz wszystkie informacje, które spełniają warunek user_id == zalogowany_id AND (oraz) ID_UPRAWNIENIA == 2.
Wynik dla jurka będzie:
...
2 |2 | 2 (jurek mogący dodawać newsy)
...
wewnątrz if wyświetlasz formularz dodawania newsa.
wewnątrz else wyświetlasz komunikat "nie masz uprawnień do dodawania newsów"

Musisz zadbać jeszcze o sesje.

Kodu Ci nie napiszę, bo niczego się nie nauczysz, a tak to przynajmniej pomyślisz : )
Mam nadzieję, że pomogłem ; )
Scypion Alvaro No.1
Awatar użytkownika
Radim89
Użytkownik
Użytkownik
Posty: 143
Rejestracja: 12 maja 2007, o 16:31

Re: System Logowania z uprawnieniami

Post autor: Radim89 » 25 sty 2011, o 23:05

A kolejne pytanie :)

Jak wysłać formularz do wybranego użytkownika poprzez wybor ??
Awatar użytkownika
noname
Użytkownik
Użytkownik
Posty: 1540
Rejestracja: 24 sie 2008, o 11:13

Re: System Logowania z uprawnieniami

Post autor: noname » 26 sty 2011, o 01:16

Nie rozumiem. Możesz konkretniej opisać sytuację?
Scypion Alvaro No.1
Awatar użytkownika
Radim89
Użytkownik
Użytkownik
Posty: 143
Rejestracja: 12 maja 2007, o 16:31

Re: System Logowania z uprawnieniami

Post autor: Radim89 » 26 sty 2011, o 10:09

Chodzi mi o to ze wypelnia sie formularz i wypelniony po czesci trzeba wyslac do wybranego uzytkownika ktory bedzie mogl dopisac cos do formularza ale nie moze zmienic nic w tym co pisal ten pierwszy uzytkownik , i aby przy zalogowaniu wiedzial ze dostal ten nowy formularz do wypelnienia ...

Rozumiesz cos z tego co napisalem ??
Awatar użytkownika
noname
Użytkownik
Użytkownik
Posty: 1540
Rejestracja: 24 sie 2008, o 11:13

Re: System Logowania z uprawnieniami

Post autor: noname » 26 sty 2011, o 13:34

hymm... tabela forms w niej potrzebne kolumny: id, author_id, user_id, oraz tabele potrzebne do wypełnienia formularza. Nie wiem... imie, nazwisko, miejsce zamieszkania, czy gej, czy nie gej. itd. No i oczywiście kolumna "odczytane". A w niej int, max długości 1. Wystarczy opisać 0 - jako nieprzeczytane, 1 - jako przeczytane.

Całą resztą zajmuje się kod.

Z jednej strony piszesz formularz, który masz zamiar przesłać dalej. Tam tworzysz najważniejsze rzeczy, jak: odbiorca + dane, które Ty masz narzucić (w formularzach input).
W zapytaniu dodającym do SQL zaznaczasz przy "odczytane" na 0. (ew. możesz ustawić w bazie jako wartość domyślną).

Odbiorca, który loguje się na konto i ma w tabeli forms formularz skierowany do niego (WHERE user_id = $id_usera_zalogowanego), oraz w "odczytane" = 0, skrypt php wyrzuca informacje, że ma niewypełniony forumlarz.

Później po kliknięciu na formularz user otrzymuje następny formularz, w którym na górze widnieje to, co Ty wpisałeś (chyba, że nie ma takiej potrzeby).

W tym wypadku pobierasz dane z tabeli forms i wyświetlasz jako zwykły tekst. Pozostałe, które musi wypełnić user, wyświetlasz jako kolejny formularz. Kolejnym zapytaniem SQL uzupełniasz dane w tabeli forms.

Mam nadzieję, że w miarę jasno to opisałem.
Scypion Alvaro No.1
Awatar użytkownika
Radim89
Użytkownik
Użytkownik
Posty: 143
Rejestracja: 12 maja 2007, o 16:31

Re: System Logowania z uprawnieniami

Post autor: Radim89 » 27 sty 2011, o 00:08

Lepiej opisac sie nie dalo :) wszystko zrozumialem nawet sobie potrafilem to wyorazic :) gorzej tylko z czescia praktyczna :) kiepski ze mnie programista ale moze cos uda mi sie uklepac :) Duuuze Piwko za pomoc :)

[ Dodano: 27 Styczeń 11 ]
Mam pytanie czy niehccialbys mi pomoc jakos kolega z forum przy malym projekcie bo widze ze znasz sie dobrze :) ??

[ Dodano: 27 Styczeń 11 ]
Kolejne pytanie :D i napewno nie ostatnie :) .

Jak zrobic cos takiego:

Mamy pewien bloczek z numerem glownym i nr stron . Pewna osoba przydziela uzytkownikowi ten bloczek ale on przed musi potwierdzic czy dostal taki bloczek ( potwierdzenie na zasadzie TAK , NIE nr seryjnego bloczka ) . Jesli jest tak to ma na stronie wszystkie wypisane bloczki na swoim stanie . Po kliknieciu w niego wyswietla nam sie nr stron . Wybieramy jakis nr strony i wypelniamy formularz po wypelnieniu formularza ten nr strony musi sie zablokowac aby uzytkownik nie mogl juz wejsc . I tak az wypelni wszystkie strony aby w bloczku nie mogl juz pisac wtedy zmienia nr seryjny bloczka oczywiscie wczesniej wlasnie dostaje przydzielenie jaki bloczek od uzytkownika .

:)
ODPOWIEDZ