![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 228 Pomógł: 7 Dołączył: 15.08.2012 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Chodzi mi o to, że jeżeli w swojej aplikacji jestem zalogowany jako administrator i chcę usunąć usera z jakichś powodów to wszystko jest ok do momentu kiedy nie trafię na takiego, który właśnie jest zalogowany... Jak sprawić, żeby go automatycznie wylogowało z sesji w momencie kiedy usunę jego konto? Oczywiście nie chcę odwoływać się do bazy danych przy każdym requescie usera |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 651 Pomógł: 116 Dołączył: 3.06.2012 Skąd: Lędziny Ostrzeżenie: (0%) ![]() ![]() |
Takie coś najlepiej jest robić za pomocą bazy danych. Przykładowo fora mają tabelę sessions, gdzie zapisywane są m.in. takie dane jak:
- IP obecnie przeglądających stronę, - losowo wygenerowany ciąg znaków - unikalny dla każdej sesji, - ID usera (jeśli niezalogowany to np. 0). W tym momencie, przy logowaniu usera tworzysz mu sesję z poziomu PHP, np:
Dodatkowo możesz wysłać do bazy - tabela np. sessions wartości: - id usera 4, - losowy ciąg znaków wygenerujesz sobie na podstawie np. microtime i dasz to w md5, - IP no to wiadomo. Teraz, nie sprawdzasz tylko czy $_SESSION jest większe od 0, ale odwolujesz się też do bazy, więc jesli chcesz usunąć usera to z bazy, z tabeli sessions wywalasz wpis, gdzie session_user_id = 4. Następnie, jesli ten delikwent odświeży stronę to do bazy standardowo pójdzie zapytanie sprawdzające jego sesję:
jeśli mysql zwróci pusty wynik to wiadomo, że tej sesji nie ma w bazie, wylogoujesz takiego usera (session_destroy() + header location). |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.10.2025 - 18:40 |