Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: rozbudowane logowanie
Forum PHP.pl > Forum > PHP
dzikuu86
w jaki sposób mogę zrobić skrypt logowania który będzie sprawdzał czy dany użytkownik jest zalogowany niezależnie od tego z jakiej maszyny będzie się logował do systemu. Nie proszę o gotowy skrypt a jedynie o wskazówki będę bardzo wdzięczny.
Pozdrawiam
vokiel
W bazie, w tabeli z użyszkodnikami dodajesz kolumnę LOGGED i po logowaniu zapisujesz do niej.

Teraz problemem może być oznaczenie wylogowania poprzez zamknięcie przeglądarki. Kliknięcie "wyloguj" nie problem obsłużyć, gorzej z dłuższym czasem braku aktywności lub po prostu zamknięciem okienka przeglądarki.

Na szybko, do wyboru widzę dwie opcje. Jeśli masz sesje na bazie danych, to możesz to połączyć i w LOGGED dodać id sesji, jak sesja wygaśnie (po wylogowaniu, bezczynności etc) to automatycznie LOGGED będzie wskazywało na nieistniejący rekord - czyli wylogowany.
Jeśli nie, to trzeba by tam wpisywać czas ostatniej aktywności i jeśli jest dłuższy niż ileś tam, to znaczy, że się odłączył i wtedy traktujemy to jako wylogowanie - czyli możliwość ponownego zalogowania z innego miejsca.
modern-web
Vokiel ma rację... z id_sesji będzie najłatwiej i najlepiej...
Ale zawsze możesz pobawić się z IP użytkownika... Oczywiście jest to dłuższa i bardziej skomplikowana wersja ;P

1. Tworzysz zapytanie na początku każdej podstrony tak, by za pomocą UPDATE zostało dodawane IP użytkownika do kolumny np. ip...
2. W miejscu gdzie ma się wyświetlać czy dany użytkownik jest dostępny, czy też nie dodajesz zapytanie SELECT gdzie ip>0 lub ip=$_SERVER['REMOTE_ADDR']
3. Przy wylogowaniu stosujesz zapytanie DELETE gdzie kolumna ip zostanie wyczyszczona dla tego użytkownika...

I działanie jest proste...
przy logowaniu modyfikuje się kolumna ip tego uzytkownika (dodaje się IP usera)
ip pusty = offline
ip jest równy IP użytkownika lub IP>0 = online
przy wylogowaniu usuwasz zawartość ip i po kłopocie

Dodaję, że nie sprawdziłem tej metody i wymyśliłem ją z nudów ;D
vokiel
@modern-web
No ale do Twojego przykładu trzeba jeszcze dodać znacznik czasu aby obsłużyć brak aktywności i wylogowanie poprzez zamknięcie przeglądarki.
yevaud
pytanie jest blednie postawione, kazdy skrypt logowania spelnia podany warunek "sprawdzania czy uzytkownik jest zalogowany niezaleznie od maszyny". Wyjatkiem sa maszyny ktore nie sa w stanie obsluzyc http - na przyklad tostery albo maszyki do miesa
modern-web
@vokiel

Wiem, dlatego podkreslilem, ze to tylko pomysł/metoda.
Wymaga sporego dopracowania ale jest równie funkcjonalny winksmiley.jpg

@yevaud

Sprawdza ale w jaki sposób ma się zmieniać status online/offline? Dajmy na to...
1. User się loguje - skrypt wykrywa aktywność i ustawia online...
2. User zamyka przeglądarkę - nie wylogowuje się... Status online pozostaje bez zmian...
3. Zmieniloby się na offline podczas wykonywania skrypty wylogowania...

Jak Ty to widzisz bo nie rozumiem...?

Sytuacja ma się inaczej gdy logowanie oparte jest o sesje/cookies - wtedy id sesji lub IP jest najlepszym rozwiązaniem winksmiley.jpg
dzikuu86
sesji na bazie niemam a w jaki sposób zarejestrować czas ostatniej aktywności??
magiczny_piesek
Ja realizuję to w ten sposób, że przy każdym logowaniu tworze token i zapisuję go w bazie i cookie.

Logowanie tego samego użytkownika z innej przeglądarki skonczy się wylogowaniem tego pierwszego.
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.