![]() |
![]() ![]() |
![]() |
-Slasher McKagan- |
![]()
Post
#1
|
Goście ![]() |
Witam!
Napisałem prosty skrypt. Rejestracja, logowanie uzytkownikow + zmiana ich danych. Teraz chciałem, zrobić blok w ktorym wyświetlać się będzie lista zalogowanych użytkowników. Mysle - żaden problem, przy logowaniu się, do bazy prefix_session dodam dane: id | nid | nick | data | ip |, a potem tylko select, przy wylogowywaniu się usuwam te dane, ale nie w tym tkwi mój problem. Co w przypadku gdy użytkownik się nie wyloguje? Oczywiście blok dalej będzie wyświetlał jego dane, więc jak usunąć te dane bez kliknicia w link wyloguj w przypadku gdy użytkowik nie jest aktywny przez np. 15 minut ? Proszę o jakąś podpowiedź (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ) Z góry dziękuje Pozdrawiam Slasher (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 1 224 Pomógł: 40 Dołączył: 6.07.2004 Skąd: Wuppertal Ostrzeżenie: (0%) ![]() ![]() |
moze lepiej przechowuj dane ostatniej aktywnosci usera. Czyli jesli zalogowany user robi 'cokolwiek' wpisujesz ten czas do bazy, np w tabeli z jego danymi. A pokazywanie ludzi 'on line' to kwestia wybrania wszystkich ludzi, którzy czas aktywnosci ustawiony mają na młodszy niz 15 min temu.
__ Zachęcam do rejestracji na forum. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 495 Pomógł: 2 Dołączył: 5.02.2006 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Hmm... ja miałem kiedyś podobny problem. Napisałem w związku z tym funkcje, która usuwała z tabeli SESSION wszystkie rekordy z czasem mniejszym od ustalonego przeze mnie (10 minut). Co przy okazji powoduje, że brak aktywności użytkownika przez 10 minut powoduje jego automatyczne wylogowanie. W tabeli SESSION dodałem kolumnę OSTATNIA_AKTYWNOŚĆ. Na każdej z podstron to pole jest aktualizowane dzięki czemu wylogowanie następuje nie po 10 minutach od zalogowania, a od ostatniej aktywności.
Active... a co z rekordami, które pozostają? Ja je usuwam, a Ty proponujesz pozostawiać i wybierać tylko z odpowiednią datą ostatniej aktywności użytkownika. W Twoim rozwiązaniu potrzebne byłoby kolejne zapytanie o istnienie rekordu użytkownika w tabeli SESSION. Licząc, że kiedyś tam wszyscy użytkownicy byliby zalogowani, czyli posiadali by odpowiadające im rekordy w tej tabeli, miałoby się po prostu drugą tabelę z danymi użytkowników. Czy przy dużej ilości użytkowników nie bardziej wydajnym jest pozostawianie jedynie danych użytkowników ostatnio aktywnych? Ten post edytował The Night Shadow 14.05.2006, 18:57:27 |
|
|
-Slasher McKagan- |
![]()
Post
#4
|
Goście ![]() |
Proszę mnie poprawić jeśli źle myśle:
No więc. Do tabeli _users dodaj pole ostatnia_aktywność, któro będzie przechowywało date. Tworze plik.php includowany do kazdej podstrony(?), w którym robię update tej daty. Potem robię select daty, ale tylko tej wcześniejszej przykładowo 10 minut (19,50 to robie select <19,40) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) @The Night Shadow nie chodzilo mi o to, zeby user sie wylogowal po tych 15 minutach (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Bo co jeśli zaznaczył opcje "zapamiętaj mnie" (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) |
|
|
![]()
Post
#5
|
|
Grupa: Przyjaciele php.pl Postów: 1 224 Pomógł: 40 Dołączył: 6.07.2004 Skąd: Wuppertal Ostrzeżenie: (0%) ![]() ![]() |
tak, dokładnie to mialem na mysli. minusem jest ze liczysz tylko zarejestrowanych online. zeby liczyc tez nie zarejestrowanych najlepiej otworzyc sobie tabele na takie wpisy, ale nie łączyc ich w zaden sposob z logowaniem, tylko np z id sesji.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 495 Pomógł: 2 Dołączył: 5.02.2006 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Hmm... więc w zależności od tego, czy jest zapamiętany, czy nie wylogowujesz, go lub nie... :- ) Zwiększa to możliwości portalu.
Wykonujesz select użytkowników z tabeli USERS dla których w tabeli SESSION ostatnia_aktywnosc < 10 minut |
|
|
-Guest- |
![]()
Post
#7
|
Goście ![]() |
No więc następna myśl mi się nasuwa (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) )
Każdy zalogowany użytkoniwk posiada u mnie sessje . Więc stworze plik.php includowany do kazdej podstorny, z polami id | nick | data | ip jezeli pole nick, zawierać będzie wartość guest/gość czy jak sobie to nazwę, jeżeli 1, to jego nick. Następnie select != gosc/gest and data = data-10 minut (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) i delete * wher data = data-11/10 (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) |
|
|
![]()
Post
#8
|
|
Grupa: Przyjaciele php.pl Postów: 1 224 Pomógł: 40 Dołączył: 6.07.2004 Skąd: Wuppertal Ostrzeżenie: (0%) ![]() ![]() |
Cytat Następnie select != gosc/gest and data = data-10 minut (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) i delete * wher data = data-11/10 (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) != gosc/quest to pobierasz wszystkich userów zalogowanych a == gosc jesli chcesz niezalogowanych. Musisz pamietac tez ze jesli ktos juz jest w tabeli to robisz update a nie insert (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 133 Pomógł: 0 Dołączył: 16.05.2005 Skąd: Lubaczów Ostrzeżenie: (0%) ![]() ![]() |
ok to zamiast nick, id kolesia, wiec jezeli cos zmienie to bedzie dalej ok. i z ta kolumna to sie dobrze rozumiemy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ). Podsumowując.
Tworze tabele _sesion z polami id | z | nid | data | ip przy kazdym wejsciu update daty wyswietlanie, data > data-10, i z = 1 delete where data ... ..sie nie zgadza:P (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) @activeplayer, wiem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ) Ten post edytował M45t3r 14.05.2006, 19:17:50 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 495 Pomógł: 2 Dołączył: 5.02.2006 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Active... a co z tym usuwaniem rekordów wylogowanych użytkowników? Lepiej to robić, czy nie? :- ) W momencie, gdy użytkownik nie ma zaznaczonej opcji ZAPAMIETAJ MNIE po wylogowaniu następuje zapisanie, go jako gość... jeśli więcej na stronę nie zajrzy jego rekord zostanie i tak usunięty przy wizycie jakiegokolwiek użytkownika.
|
|
|
![]()
Post
#11
|
|
Grupa: Przyjaciele php.pl Postów: 1 224 Pomógł: 40 Dołączył: 6.07.2004 Skąd: Wuppertal Ostrzeżenie: (0%) ![]() ![]() |
@TNS, tak jak piszesz. To czysta logika. Ile ludzi tyle implementacji. Pewnie nie jeden by to jeszcze 'mądrzej' niz my tutaj wymyslił.
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 133 Pomógł: 0 Dołączył: 16.05.2005 Skąd: Lubaczów Ostrzeżenie: (0%) ![]() ![]() |
No wiec ok, zrobilem (prawie) ale zostal jeden blad... gdy gosc odswiezy strone, to dodaje go jeszce raz do bazy, jak temu zapobiec (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) wstawic ciastko
setcookie('jest', ''); i sprawdzac czy jest ? jesli jest to update (ale jak rozroznic goscia (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ) a jak nie ma to insert (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) tutaj kod...
|
|
|
![]()
Post
#13
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat gdy gosc odswiezy strone, to dodaje go jeszce raz do bazy, jak temu zapobiec (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) http://forum.php.pl/index.php?showtopic=44383 |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 133 Pomógł: 0 Dołączył: 16.05.2005 Skąd: Lubaczów Ostrzeżenie: (0%) ![]() ![]() |
a wracajc do drugiego pytania; jak rozroznic goscia ? po IP ?
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.09.2025 - 22:11 |