![]() |
![]() ![]() |
![]() |
-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ź ![]() Z góry dziękuje Pozdrawiam Slasher ![]() |
|
|
![]()
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 -------------------- Programista Stron i Serwisów WWW oraz Aplikacji Internetowych
Specjalista ds. Pozycjonowania Aplikacji Internetowych Copywriter |
|
|
-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) ![]() @The Night Shadow nie chodzilo mi o to, zeby user sie wylogowal po tych 15 minutach ![]() ![]() |
|
|
![]()
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 -------------------- Programista Stron i Serwisów WWW oraz Aplikacji Internetowych
Specjalista ds. Pozycjonowania Aplikacji Internetowych Copywriter |
|
|
-Guest- |
![]()
Post
#7
|
Goście ![]() |
No więc następna myśl mi się nasuwa
![]() 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 ![]() ![]() |
|
|
![]()
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 ![]() ![]() != 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 ![]() |
|
|
![]()
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
![]() 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 ![]() ![]() @activeplayer, wiem ![]() Ten post edytował M45t3r 14.05.2006, 19:17:50 -------------------- Nie chce pieniedzy, diamentow, tulipanow i fasoli!
|
|
|
![]()
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.
-------------------- Programista Stron i Serwisów WWW oraz Aplikacji Internetowych
Specjalista ds. Pozycjonowania Aplikacji Internetowych Copywriter |
|
|
![]()
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
![]() setcookie('jest', ''); i sprawdzac czy jest ? jesli jest to update (ale jak rozroznic goscia ![]() ![]() tutaj kod...
-------------------- Nie chce pieniedzy, diamentow, tulipanow i fasoli!
|
|
|
![]()
Post
#13
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat gdy gosc odswiezy strone, to dodaje go jeszce raz do bazy, jak temu zapobiec ![]() http://forum.php.pl/index.php?showtopic=44383 -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
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 ?
-------------------- Nie chce pieniedzy, diamentow, tulipanow i fasoli!
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 13.06.2025 - 16:04 |