Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Czas przebywania na stronie.
Kużdo
post
Post #1





Grupa: Zarejestrowani
Postów: 181
Pomógł: 14
Dołączył: 4.06.2008

Ostrzeżenie: (0%)
-----


Witam,

W jaki najłatwiejszy sposób zrealizować zapis czasu przebywania na stronie przez usera?

Myślałem o ciasteczkach i skrypcie JS, który przy opuszczaniu strony zapisywałby czas przebywania do ciasteczka. Przy wejściu na kolejną podstronę PHP odczytywałoby ciasteczko z dokładnym czasem. Ale nie wiem czy tak można zrobić, a poza tym nie znam się akurat na JS.

Byłby ktoś chętny pomóc/nakierować?

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Kużdo
post
Post #2





Grupa: Zarejestrowani
Postów: 181
Pomógł: 14
Dołączył: 4.06.2008

Ostrzeżenie: (0%)
-----


  1. <script type="text/javascript">
  2. $(window).unload(function(){
  3. $.ajax({
  4. type: "POST",
  5. url: "ajax.php",
  6. data: "id=5"
  7. });
  8. });

W data podajesz zmienne dzięki którym możesz identyfikować osobników. Przykładowo możesz wstawiać tam jakiś hash wygenerowany dla każdego wywołania osobno i unikalny, ew. łączony z innymi zmiennymi. Zmienne podajesz w formacie nazwa1=wartosc1&nazwa2=wartosc2. Jeżeli to ma być tylko zliczanie czasu pobytu, to tyle wystarczy.

ajax.php to plik, który ma być wywoływany tylko i wyłącznie przez JS. Przydałoby się go też odpowiedno zabezpieczyć. Ale najprostsza wersja, bez zabezpieczeń, etc, etc, etc, to np.:
  1. <?php
  2. $dbhost = 'localhost';
  3. $dbuser = 'root';
  4. $dbpass = 'password';
  5. $dbname = 'database';
  6.  
  7. @mysql_connect($dbhost, $dbuser, $dbpass);
  8. @mysql_query("SET NAMES 'utf8'");
  9. @mysql_select_db($dbname);
  10.  
  11. $result = mysql_query("UPDATE `history` SET `end` = '".time()."' WHERE `id` = '".$_POST['id']."'");
  12. ?>


Inna wersja to przykładowo zapisywanie czasu startu sesji do zmiennych sesyjnych, a w pliku AJAX odejmowanie od obecnego czasu, czasu ze zmiennej sesyjnej i dopiero zapisanie tego do bazy, wtedy ma się tylko jedno zapytanie na wywołanie strony:
  1. $dlugosc_pobytu = time() - $_SESSION['start_sesji'];
  2. $result = mysql_query("INSERT INTO `history` (`login`, `ip`, `start`, `dlugosc`) VALUES ('{$_SESSION['login']}', '{$_SERVER['REMOTE_ADDR']}', '{$_SESSION['start_sesji']}', '{$dlugosc_pobytu}')");


Pozdrawiam (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 13.10.2025 - 22:19