jimens
12.02.2009, 00:16:25
Cześć!
mam problem,
jak zrobić coś takiego:
mam baze danych mysql.
jest strona ktora pobiera z bazy dane uzytkownikow i wtedy przy logowaniu php sprawdza czy haslo zgadza sie z tym wpisanym w formukarzu i bazie danych. jesli tak to loguje uzytkownika do serwisu.
logowanie oparte jest na sesji.
i tutaj jest wazne pytanie na ktore nie moge znalezc odpowiedzi:
co zrobic zeby ten sam uzytkownik nie mogl sie zalogowac na innym kompie??
- moj pomysl jest taki zeby w bazie danych dodac tabele zalogowani i tam wprowadzic login uzytkownika ktory jest zalogowany.
- wylogowanie usuwalo by go z tabeli zalogowani
i tu kolejny problem - co w momencie gdy ten wlasnie uzytkownik bedzie chcial sie zalogowac na innym komputerze a na poprzednim sie nie wyloguje tylo wylaczy komputer czy tez przegladarke (po prostu zapomni kliknac wyloguj - cala operacja usuniecia go z tabeli zalogowani nie dojdzie do skutku)
prosze o jakies wskazówki bo juz nie moge dac z tym rady.
webdevil
12.02.2009, 00:21:47
trzymaj w tej tabeli również czas ostatniej aktywności użytkownika - przy każdym wejściu na stronę zmieniaj tą wartość
a przy logowaniu sprawdzaj czy była aktywność przez ostatnie np. 5 minut
Kethrax
12.02.2009, 00:22:59
Zapisuj w sesji adres IP komputera z którego zalogował sie obecnie userek.
I weryfikuj IP przy logowaniu. Jeżeli jest inne od zapisanego obecnie w sesji to nie loguj.
dr_NO
12.02.2009, 08:57:16
@Kethrax ae w przypadku zmiennego IP nigdy nie wejdzie na stronę
konys
12.02.2009, 10:43:10
Ja to rozwiazalem poprzez trzymanie danych sesji w bazie (zobacz
session_set_save_handler) i wyszukiwanie w danych sesyjnych loginu uytkownika - tzn. jesli w dancyh sesji widnieje juz uzytkownik o podanym identyfikatorze to go ponownie nie logujemy. Nie jest to 100% rozwiazanie problemu (np. gdy uzytkownik wyczysci cookie a garbage collector jeszcze nie zdazy wyczyscic danych sesji i uzytkownik sprobuje zalogowac sie ponownie to zostanie odrzucony), ale wydaje mi sie, ze jest to najbardziej optymalne rozwiazanie.
djstrong
12.02.2009, 11:54:59
Proszę pamiętać o takich sieciach, w których kolejne zapytania są wysyłane z różnych IP.
konys
12.02.2009, 12:07:42
@djstrong No wlasnie o tym wspomnial dr_NO a moje rozwiazanie w ogole nie bierze pod uwage IP
djstrong
12.02.2009, 12:19:19
Pojęcie "zmienne IP" jest głównie kojarzone ze zmianą podczas logowania do sieci (np. neostrada). Nie wiem co miał na myśli dr_NO, ale wolałem dodać, bo mało osób wie o takiej możliwości. W przeszłości byłem w takiej sieci i nie dało się korzystać z wielu "dużych" stron jak i popularnych silników.
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.