[php] Visit Time & Total time spend

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Mike

Mike

11/07/2009 18:53:00
Quote Anchor link
Beste PHP-ers,

hoe kan ik van elke bezoeker van mijn site de verblijf -tijd met PHP meten?

Ik dacht aan cookies... maar zonder JavaScript! Dus geen gebruik van onUnLoad, vanwege de mense die geen JavaScript aan hebben staan.

Heb je meer details nodig, zeg 't dan ff...


Alvast tnx, en Greetz van Mike
 
PHP hulp

PHP hulp

19/04/2024 08:29:50
 
Wouter De Schuyter

Wouter De Schuyter

11/07/2009 19:09:00
Quote Anchor link
Hmm zonder javascript kan je dit niet precies gaan doen..
Gewoon bij elke pageload een nieuw record met (id, ip & datetime) en het verschil tussen de records berekenen..
 
Mike

Mike

11/07/2009 19:11:00
Quote Anchor link
Goed idee...

Maar... doordat ik het script alleen voor 1 pagina nodig heb is dat niet mogelijk. En zelfs als dat zou kunnen, wat doe je dan als de user de pagina exit?

Dus moet ik JS gaan gebruiken?
 
- Ariën  -
Beheerder

- Ariën -

11/07/2009 19:18:00
Quote Anchor link
Hej, zoiets heb ik ook gebouwd.
Aangezien je nooit de exacte tijd kan meten; zelfs neit met javascript (user zit op ander tabblad, heeft browser afgesloten) gebruik ik een timeout tijd van 5 minuten.

Dus een accurate tijd zal je nooit krijgen. maar als je het gewoon leuk vindt om op de site te hebben, dan kan ik wel wat code geven.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$activetime
= time();
mysql_query("UPDATE leden SET lastaction = '".$activetime."' WHERE id= '".$get_userdata['id']."' "); // Hoe roep jij je huidige userID op?

// verschil berekenen en als deze kleiner is dan 300 (5 min.) dan updaten... anders niet!

$verschil = time() - $get_userdata['lastaction'];
if ($verschil<300) {
 mysql_query("UPDATE leden SET spenttime = spenttime + '".$verschil."' WHERE id= '".$get_userdata['id']."' "); // tja, hoe roep jj je userID hier op?
}
?>

Zoiets wordt het dus. Hence het zelfs beter kan, maar goed. Ik koos 2 jaar terug voor time(), en het aantal actieve seconden online (niet accuraat!) opslaan in de database.

Met een leuk scriptje kan je hier zelfs een string uittoveren als:
'1 dag, 2 uur, 13 minuten en 37 seconden online'
Gewijzigd op 01/01/1970 01:00:00 door - Ariën -
 
Mike

Mike

11/07/2009 19:21:00
Quote Anchor link
Wow, super!

You put a smile on ma face :)

Ik zal 't ff uit elkaar plukke en in me script zetten.

Thnx

Edit: Dit stukje code is nice ->

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if ($verschil<300) {


Niet veel, maar is the main thing :P
Gewijzigd op 01/01/1970 01:00:00 door Mike
 
- Ariën  -
Beheerder

- Ariën -

11/07/2009 19:33:00
Quote Anchor link
Tja, gewoon een simpele berekening in PHP hoor ;)

Veel success ermee, als je vragen hebt hoor ik het wel in dit topique.
Gewijzigd op 01/01/1970 01:00:00 door - Ariën -
 
Mike

Mike

11/07/2009 19:44:00
Quote Anchor link
Ik heb een example gecode die i.p.v. de mySQL queries gebruik maakt van cookies...

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
// Dit is een voorbeeld Script
// Created by Mike for PHPHulp.nl Forum


    $timestamp                 = time();
    $stats_date                = date ("d/m/Y");    // Stats Date

    $visit_alpha = $_COOKIE['lastVisit'];
    $visit_beta  = $_COOKIE['visitTime'];

    $stats_visittime     = ($timestamp - $visit_beta) - (60 * 60);
    $stats_visittime     = date("H:i:s", $stats_visittime);

if(!isset($_COOKIE['lastVisit']) && !isset($_COOKIE['visitTime'])) {
    $cookTime = 60 * 60 * 10 + time();
    setcookie('lastVisit', $stats_date, $cookTime);
    setcookie('visitTime', $timestamp, $cookTime);
}


echo <<<HTML
<p><strong>Visit Date:</strong> $visit_alpha </p><p><strong>Visit Duration:</strong> $stats_visittime </p>
HTML
;

exit();

?>


Check a.u.b. ff of er iets geoptimaliseerd kan worden... Ik ga het dan verder uitbrijden en aanpassen.
Gewijzigd op 01/01/1970 01:00:00 door Mike
 
- Ariën  -
Beheerder

- Ariën -

11/07/2009 19:50:00
Quote Anchor link
En wat als je geen cookies accepteert? :P
 
Afra ca

Afra ca

11/07/2009 19:54:00
Quote Anchor link
Je echo op het eind wordt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo '<p><strong>Visit Date:</strong> '.$visit_alpha.' </p><p><strong>Visit Duration:</strong>'. $stats_visittime.' </p>';
?>
 
Mike

Mike

11/07/2009 19:55:00
Quote Anchor link
@ Aar: Idd. een goed punt ^^

Maar in dit voorbeeld script zijn de cookies alleen een temporaire vervanging van de mySQL queries.

Dus wil ik alleen de workflow van het script indiceren :P

Btw. heb je nog iets negatiefs kunnen vinden?

@ Afra: Is de <<<HTML versie ouderwets? of wat is het verschil tussen jou en mijn mannier? Please explain :D
Gewijzigd op 01/01/1970 01:00:00 door Mike
 
- Ariën  -
Beheerder

- Ariën -

11/07/2009 20:59:00
Quote Anchor link
Dat zijn heredocs...
Komt niet echt ten goede aan de highlighting, en het is gewoon ranzig...
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.