[php] bezoekers loggen gaat net niet helemaal goed

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
Ik gebruik dit stukje script om m'n bezoekers te loggen:

PHP:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<?php

 // ips of search engines, we want to skip these
$skip_ip[] = "64.68.82";
$skip_ip[] = "65.214.36";
$skip_ip[] = "66.150.40";
$skip_ip[] = "66.196.72";
$skip_ip[] = "208.145.190";
$skip_ip[] = "216.239.46";

if ($REMOTE_ADDR != "62.108.21.134" && !in_array(substr($REMOTE_ADDR,0,-strlen(strrchr($REMOTE_ADDR, "."))),$skip_ip))
{
     // we're gonna check if this is the first time in this session the user accesses a page:
    if (!isset($HTTP_SESSION_VARS["u_counter"]))
    {
         // we add a unique visit and use this value as the user_id later on
        $u_counter = implode("", file($root."/include/visits.dat")) + 1;
        $fp = fopen($root."/include/visits.dat","w");
        fputs($fp, trim($u_counter));
        fclose($fp);
        session_register("u_counter");
    }
    if ($REQUEST_URI != $HTTP_SESSION_VARS["last_page"])
    {
        $last_page = $REQUEST_URI;
        session_register("last_page");
    
        $convert_days   = array(
                    "Mon"   => "1",
                    "Tue"   => "2",
                    "Wed"   => "3",
                    "Thu"   => "4",
                    "Fri"   => "5",
                    "Sat"   => "6",
                    "Sun"   => "7"
                    );
        
        $ip     = getip();
        $host       = gethostbyaddr($REMOTE_ADDR);
        
        $browser    = $HTTP_USER_AGENT;
        
        $to     = $REQUEST_URI;
        if (eregi(".*/$", $to))
        {
            $to = $to."index.php";
        }
        
        $from       = $HTTP_REFERER;
        if (eregi(".*/$", $from))
        {
            $from = $from."index.php";
        }
        
        $user_id    = $u_counter;
        
        $year       = date("Y");
        $month      = date(m);
        $day        = date(d);
        $wd     = date(D);
        $wday       = $convert_days[$wd];
        $our        = date(H);
        $minute     = date(i);
        $second     = date(s);
        
         // opening a connection to mysql host
        if (@$dbif = mysql_pconnect("***","***","***"))
        {
             // performing the query
            $query = "INSERT INTO log
                (ip,host,browser,van,naar,user_id,year,month,wday,day,our,minute,second)
                VALUES
                ('$ip','$host','$browser','$from','$to','$user_id','$year','$month','$wday','$day','$our','$minute','$second')
                ";
            $result = mysql_db_query("***",$query) or die(mysql_error());   
        }
    }
    else
    {
         // this means the user refreshed the page, so we do nothing
    }
}
?>


(ik zie nu trouwens dat ik het opslaan van die unieke visits nog steeds in een file doe ipv de database..moet ik ook nog ff aanpassen :-)

Hij werkt uitstekend, op 1 klein dingetje na: als mensen mijn site binnen een framestructuur bekijken wordt iedere hit als unieke visit gezien. tenminste ik vermoed dat dat in deze gevallen gebeurd. Is namelijk twee gevallen gebeurd: 1x bij iemand die m'n site vanuit hotmail opende en 2x van iemand die bij http://ask.com/main/metaAnswer.asp vandaan kwam. en zag dat dat ook in een framstructuur gebeurt.

kan iemand mij uitleggen hoe dat komt?

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Wellicht dat een frame als twee (of zelfs 3) losse pageviews wordt gezien door je webserver he?
Daarvoor maakt het zelfs geen snars uit dat iets wel of niet in een frame zit, dat maakt alleen voor je browser uit...

Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
ik snap je reply niet helemaal
mijn site is gewoon 1 frame binnen de framestructuur van hotmail of dat ask.com (in het geval dat ze daar vandaan komen). Mijn site zelf maakt (uiteraard :-) hehe) geen gebruik van frames.
maar mensen die op die manier m'n site bezoeken worde bij iedere klik dus als nieuwe bezoeker geregistreerd. Ik snap nog steeds niet waarom dat zo is en wat ik daar vervolgens aan zou kunnen doen

Acties:
  • 0 Henk 'm!

Verwijderd

marty schreef op 17 december 2002 @ 01:27:
ik snap je reply niet helemaal
mijn site is gewoon 1 frame binnen de framestructuur van hotmail of dat ask.com (in het geval dat ze daar vandaan komen). Mijn site zelf maakt (uiteraard :-) hehe) geen gebruik van frames.
maar mensen die op die manier m'n site bezoeken worde bij iedere klik dus als nieuwe bezoeker geregistreerd. Ik snap nog steeds niet waarom dat zo is en wat ik daar vervolgens aan zou kunnen doen
Dan heeft het dus te maken met die sessions...

Heb je wel session_start(); helemaal bovenaan je page staan ? Anders kan hij geen session beginnen :)

Oh ja: waarom gebruik je mysql_pconnect? Niet nodig in dit (stukje) script :)

[ Voor 7% gewijzigd door Verwijderd op 17-12-2002 07:52 . Reden: Iets toegevoegd ]


Acties:
  • 0 Henk 'm!

  • FailFr8er
  • Registratie: Juli 2001
  • Laatst online: 13:11
Misschien handig (just an idea) om em te reloaden als ie em opent in een frame (dus dat ie van MSN/JOUW naar JOUW site gaat). Dan ben je (denk ik) van het hele probleem af :)

Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
Dan heeft het dus te maken met die sessions...

Heb je wel session_start(); helemaal bovenaan je page staan ? Anders kan hij geen session beginnen
Uiteraard, als ik dat niet had, dan zou het wel helemaal nooit werken
Misschien handig (just an idea) om em te reloaden als ie em opent in een frame (dus dat ie van MSN/JOUW naar JOUW site gaat). Dan ben je (denk ik) van het hele probleem af
Dat zou ik kunnen doen jah.... maar dat verklaart nog steeds het verschijnsel niet en wil eigenlijk ook graag weten hoe dit nou kan :)

Acties:
  • 0 Henk 'm!

Verwijderd

maar ik zou een usercounter voor een echte grote website waar veel mensen op komen niet maken door de bezoeken in een file op te slaan, als dan 2 mensen de pagina tegelijkertijd laden dan krijg je een fout. En dat kan je voorkomen door een database te gebruiken

Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
1. het is geen grote website
2. dat zag ik ook al. ik was m'n oude counter nog aan het omzetten van een file gebasseerde naar database. hij is inmiddels volledig database

Maar weet nou nog steeds niet waarom het in een framestructuur mis gaat. Kan dat wel gaan verhelpen op de manier die nalie als suggestie gaf, maar zou ook het achterliggende princiepe wel willen weten
Pagina: 1