Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Logowanie ze statystyka
Forum PHP.pl > Forum > PHP
relaxant
Witam.

Wymyśliłem sobie ostatnio żeby dopisać do sktyptu logowania statystykę. Wszystko zapisywane byłoby w bazie tj.: identyfikator logującego, IP, czas zalogowania. Dodakowo w przyszłszości zamierzam dodać śledzenie użytkowników.

Wszystko wygląda fajnie i wogóle tylko pojawia się jeden mały problem. Gdy użytkownik zechce się wylogować kliknie sobie ładny button wyloguj, co wywoła funkcję które zapisze aktualny czas do bazy i zamknie sesje. Jeśli jednak się nie wyloguje (zamknie okno przeglądarki) sesja zostanie sama zamknięta po określonym czasie i czas wylogowania nie zostanie zapisany do bazy sad.gif

Może ktoś już walczył z podobnym problem. Będe wdzięczny za wskazówki.
SongoQ
A moze zakonczenie sesji po przez dluga nieaktywnosc = czas wylogowania ? Czyli czas wylogowania = czas ostatniej aktywnosci starszy niz np 30 minut?
relaxant
No jest to jakis sposób. Znalazłem jednak funkcje session_set_save_handler smile.gif I próbuje napisac swoja funkje destroy. Co o tym myślicie?
matid
Cytat(relaxant @ 2005-07-26 11:19:18)
No jest to jakis sposób. Znalazłem jednak funkcje session_set_save_handler smile.gif I próbuje napisac swoja funkje destroy. Co o tym myślicie?

AFAIK to tak nie przejdzie. Funkcja destroy jest wykonywana przy niszczeniu sesji, a nie przy usuwaniu ich przez garbage collector czy usunięciu ciastka z identyfikatorem sesji.
NuLL
Pro -> php

Pozatym czegoś takiego jak zamknięcie sesji w razie wyłączenia przeglądarki nie da się uzyskać. Było już o tym dość dużo na forum.
SongoQ
@relaxant Zaimplementuj session_set_save_handler i dodatkowy wykorzystaj to co Ci pisalem wczesniej, mysle ze osiagniesz to co chciales.
bieniek
Ja bym spróbował JS onunload="zapisz()"
A w funkcji zapisz coś takego
Kod
function zapisz() {
   var httpReq  = new XMLHttpRequest();
   httpReq.open("POST", 'url_do_skryptu_php',false);
   httpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
   httpReq.send('np costakigo: timestamp=<?php time() ?>);
   httpReq.responseText;
}


A w skrypcie normalnie zapisujesz do bazy
Sam używam HttpRequesta do innych rzeczy, a tu na szybko sklecilem taką funkcyjkę (proszę o uwagi).
sobstel
set_session_save_handler i odpowiednie stworzona funkcja gc powinna zalatwic sprawe
SongoQ
@bieniek Twoj pomysl jest ok, ale nie zawsze skuteczny.
bieniek
@SongoQ Jak byś mógł to napisz w jakich przypadkach może zawieść. Dodam jeszcze tylko, że uzależnienie od przeglądarki mam jak najbardziej zrobione, to jest okrojona wersja smile.gif
SongoQ
- wylaczenie JS
- zamkniecie PC
- wywalenie przegladarki smile.gif
- zabicie procesu
i wiele innych.
relaxant
SongoQ ma racje JS to nie najlepsze rozwiązanie choć przyznać trzeba że pomysł ciekawy. Jednak staram się jej unikać jak ognia więc raczej nie skorzystam, ale dzieki za odpowiedź.

Będe próbował z funkcją gc.
Dzięki
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.