Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Ostatnia wizyta użytkownika na stronie
Forum PHP.pl > Forum > Przedszkole
Dynuel
Hej, na stronie chce zrobić że pomiędzy np. między newsami, był znacznik kiedy użytkownik ostatnio był na stronie.

Będzie to wyglądało tak że, są jakieś newsy (te nowsze od ostatniej wizyty danego gościa), następnie ten znacznik (jakiś komunikat typu "to jest moment kiedy ostatnio byłeś na stronie") a następnie pozostałe newsy.

W serwisie nie ma opcji rejestracji więc oczywiście dane będę przechowywał w COOKIE, dane odnośnie wizytu usera a nie odnośnie przeczytanych/nieprzeczytanych newsów

I teraz pojawia sie problem PRAKTYCZNY nie techniczny, bo wypadało by żeby ta informacja była pokazywana cały czas, tylko teraz pytanie jak często ma się aktualizować...

Załóżmy ze jest taka sytuacja
2007-03-10 11:10 -> Użytkownik wchodzi na strone, zapis do cookie, jest to pierwsze wejście, zaden komunikat nie zostaje wyświetlony
2007-03-11 14:10 -> Użytkownik wchodzi na strone nastepnego dnia, zapis do cookie, zostaje wyświetlony komunikat że user był ostatnio na stronie dnia 2007-03-10 11:10
2007-03-11 14:11 -> Użytkownik zmienia kategorie/odświerza strone, zapis do cookie, i teraz nie wyświetle oczywiście ze user ostatnio na stronie był minute wcześniej, tylko wypadało by aby komunikat podawał datę z ostatniej sesji/wizyty jakkolwiek to nazwiemy, czyli tej z poprzedniego dnia

wiec trzeba by zrobić jakiś limit, że dane w cookie aktualizują się np. co godzine, dzień czy ile tam... właśnie to jest najwiekszy problem i chciałbym prosić byście mi właśnie doradzili w tej sprawie

ps. oczywiście z góry zakładam, że poraz kolejny nie potrafie sensownie przedstawić problemu, nikt go nie zrozumie, co za tym idzie nie odpowie i skończy sie na tym ze sam bede musiał wybrać jakieś ultimatum... tylko kurcze mi chodzi o WASZE zdanie na ten temat
Cysiaczek
Notujesz 2 rzeczy - czas inicjacji ostatniej sesji oraz czas ostatniej akcji sesji. Nie będzie wówczas takiego problemu.

Pozdrawiam.

Popraw proszę tytuł topiku na zgodny z zasadami forum Przedszkole
Dynuel
Cytat(Cysiaczek @ 17.12.2007, 14:43:42 ) *
Notujesz 2 rzeczy - czas inicjacji ostatniej sesji oraz czas ostatniej akcji sesji. Nie będzie wówczas takiego problemu.


Mógłbym prosić byś dokładniej opisał jak to robić gdyż nie bardzo rozumiem, tzn. zastosowanie tego w praktyce

a dokłądniej w ogole nic mi nie mówią:
inicjacji ostatniej sesji
czas ostatniej akcji sesji

mówisz o takich zwykłych sesjach?
Cysiaczek
Sesja to sesja - nie wiem co u Ciebie robi za sesję. Jak się user loguje, to możesz to sobie zanotować np w bazie danych.
Dynuel
Cytat(Cysiaczek @ 17.12.2007, 15:29:55 ) *
Sesja to sesja - nie wiem co u Ciebie robi za sesję. Jak się user loguje, to możesz to sobie zanotować np w bazie danych.

chodzi mi o tą samą sesję

Cytat
W serwisie nie ma opcji rejestracji więc oczywiście dane będę przechowywał w COOKIE, dane odnośnie wizytu usera a nie odnośnie przeczytanych/nieprzeczytanych newsów

u mnie sie user nie loguje, chce uzyc do tego jedynie COOKIE, oczywiście sesje też mogę odpalić jak będzie potrzeba
Cysiaczek
No to zapisuj te dwie wartości w cookie - ciacho ustaw np na 30 dni i po kłopocie, Sprawdzaj,. czy wygasło i jeśli tak, to wysyłaj nowe.
Dynuel
Cytat(Cysiaczek @ 17.12.2007, 15:33:30 ) *
No to zapisuj te dwie wartości w cookie - ciacho ustaw np na 30 dni i po kłopocie, Sprawdzaj,. czy wygasło i jeśli tak, to wysyłaj nowe.


no ok ale ja nie rozumiem jakie zmienne (co one mają interpretować) i co dokładnie mam z nimi robić, jak porównywać i w jakim czasie

na samym wstepie zaznaczałem że mi nie chodzi o techniczne acz praktyczne podejście do tematu
b_chmura
Zapisujesz do bazy time ostatniego "ruchu" użytkownika (czyt. date ostatniego odświeżenia/przejścia na stronę)
lub ewentualnie za pomocą onunload="" odwołujesz się do js'owskiej/ajax'owskiej funkcji która ten czas zapisze do bazy
Nattfarinn
E tam, prościej już tak jak mówi Cysiaczek. Ja bym do COOKIES wysłał dwie zmienne: LastTime i CurrentTime. Teraz raz na sesję robisz przypisanie CurrentTime do LastTime (LastTime = CurrentTime) i niezależnie od sesji do CurrentTime wstawiasz czas aktualny (CurrentTime = czas wykonania skryptu).

Teraz wytłuamczenie:
- LastTime przechowuje czas kiedy na stronie byłeś poprzednim razem.
- CurrentTime przechowuje czas ostatniego odświeżenia strony.
- W obrębie jednej sesji nie zmieniany jest czas poprzedniej wizyty przy zmianie podstrony (więc zwykłe chodzenie po stronie nie jest rejestrowane jako ostatnia wizyta).
- Po zakończniu sesji (np. wyłączeniu przeglądarki) i ponownemu wejściu na stronę tworzona jest nowa sesja, więc z COOKIES pobierany jest czas ostatniego odświeżenia strony i wstawiony jako czas ostatniej wizyty a później do ostatniego odświeżenia strony przypisany jest nowy czas.
Dynuel
Cytat(Nattfarinn @ 18.12.2007, 08:25:02 ) *
E tam, prościej już tak jak mówi Cysiaczek. Ja bym do COOKIES wysłał dwie zmienne: LastTime i CurrentTime. Teraz raz na sesję robisz przypisanie CurrentTime do LastTime (LastTime = CurrentTime) i niezależnie od sesji do CurrentTime wstawiasz czas aktualny (CurrentTime = czas wykonania skryptu).

Teraz wytłuamczenie:
- LastTime przechowuje czas kiedy na stronie byłeś poprzednim razem.
- CurrentTime przechowuje czas ostatniego odświeżenia strony.
- W obrębie jednej sesji nie zmieniany jest czas poprzedniej wizyty przy zmianie podstrony (więc zwykłe chodzenie po stronie nie jest rejestrowane jako ostatnia wizyta).
- Po zakończniu sesji (np. wyłączeniu przeglądarki) i ponownemu wejściu na stronę tworzona jest nowa sesja, więc z COOKIES pobierany jest czas ostatniego odświeżenia strony i wstawiony jako czas ostatniej wizyty a później do ostatniego odświeżenia strony przypisany jest nowy czas.



a mógłbym prosić by ktoś to przedstawił w uproszczonej formie kodu PHP, gdyż wybaczcie tak średnio jest to dla mnie zrozumiałe, najbardziej nie moge zrozumieć w jaki sposób wykrywamy ze zaczyna sie nowa sesja i wartość z currentTime wrzucamy do LastTime
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.