Script veranderen
ik heb een script wat de bezoekers op je website moet tellen en wat informatie over hun opslaan in een database. Ik heb geprobeert, omdat ik vind dat er veel overbodinge functies inzitten om er wat functies uit te halen (wat mij niet is gelukt omdat er dan de ene na de andere foutmelding op het beeldscherm), wil iemand woor mij het script inkorten dat er alleen nog maar word weergegeven:
----------
Het Hegemiddelde aantal hits is: ...
Het gemiddelde aantal bezoekers is: ...
Een gemiddelde bezoeker bekijkt ... pagina's.
Meeste gebruikte browsers
...
Schermresoluties
...
----------
de scripten zijn:
-----teller.html-----
<html>
<head>
<title>
Statistieken
</title>
</head>
<body>
<script language="JavaScript">
<!--
pagina = escape(document.location.href);
ref = escape(location.referrer);
if ((ref == "") || (ref == "undefined")) { ref = "bookmark"; }
ss = screen.width +"x"+ screen.height;
sc = (navigator.appName.indexOf("Microsoft") > -1) ? screen.colorDepth : screen.pixelDepth;
src = "img/stats.php?pagina=" +pagina+ "&ref=" +ref+ "&ss=" +ss+ "&sc=" +sc;
src = "<img src=\"" +src+ "\" width=1 height=1 border=0 align=\"left\">";
document.write(src);
-->
</script>
</body>
</html>
----------
-----hits.php-----
Code (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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
<?
$db = mysql_connect("localhost","","");
mysql_select_db("windsurfingwereld");
/* Bepaal begin- en einddatum van deze maand */
$begin_deze_maand = date("Ym") . "000000";
$eind_deze_maand = (date("Ym") + 1) . "000000";
/* Haal alle hits van deze maand op */
$sql = "SELECT COUNT(*) AS uniek, SUM(hits) AS hits,
SUBSTRING(datum, 7, 2) AS dag FROM ip
WHERE datum BETWEEN '$begin_deze_maand' AND '$eind_deze_maand'
GROUP BY dag ORDER BY dag ASC";
$result = mysql_query($sql) or
die(mysql_error());
$max = 1;
$h_totaal = 0;
$u_totaal = 0;
$aantal = 0;
while ($row = mysql_fetch_object($result))
{
$hits[$row->dag] = $row->hits;
$uniek[$row->dag] = $row->uniek;
if ($row->hits > $max)
$max = $row->hits; // Bepaal hoogste waard
$h_totaal += $row->hits;
$u_totaal += $row->uniek;
$aantal++;
}
/* Doorloop nu alle dagen van de maand */
echo "<table border=0 cellspacing=1><tr>";
for ($i = "01"; $i <= "32"; $i++)
{
$h_height = round($hits[$i] / $max * 200);
$u_height = round($uniek[$i] / $max * 200);
if ($h_height == 0) $h_height = 1;
if ($u_height == 0) $u_height = 1;
echo "<td valign=\"bottom\" align=\"center\"><img src=\"img/graph.gif\" width=8 height=$h_height title=\"Hits: $hits[$i]\">
<img src=\"img/graph.gif\" width=8 height=$u_height title=\"Unieke bezoekers: $uniek[$i]\" hspace=1></td>\n";
}
echo "</tr>\n<tr>\n";
for ($i = 1; $i <= 31; $i++)
{
echo "<td align=\"center\">$i</td>\n";
}
echo "</tr>\n</table><p>";
/* Extra's */
$h_gem = number_format($h_totaal / $aantal, 2, ",", ".");
$u_gem = number_format($u_totaal / $aantal, 2, ",", ".");
$pageviews = number_format($h_totaal / $u_totaal, 2, ",", ".");
echo "Het gemiddelde aantal hits is: <b>$h_gem</b><br>\n";
echo "Het gemiddelde aantal bezoekers is: <b>$u_gem</b><br>\n";
echo "Een gemiddelde bezoeker bekijkt <b>$pageviews</b> pagina's.<p>\n";
/*
Met $limit geeft je het maximale aantal items aan bijv. 5 als je alleen de top-5 wilt zien.
*/
function ShowStats($table, $desc, $limit = "")
{
global $db;
$limit = ($limit) ? "LIMIT 0, $limit" : "";
/* Maak tabel-kop */
echo "<table border=0 cellspacing=0 width=500>\n";
echo "<tr bgcolor=\"black\">\n";
echo "\t<td colspan=\"2\"><font color=\"white\"><b> $desc</b></font></td>\n";
echo "</tr>\n";
/* Inhoud - lees uit database */
$sql = "SELECT $table as naam, aantal FROM $table ORDER BY aantal DESC $limit";
$result = mysql_query($sql) or die(mysql_error());
$first = TRUE;
while ($row = mysql_fetch_object($result))
{
if ($first)
{
$max = $row->aantal;
$first = FALSE;
}
$width = round($row->aantal / $max * 300);
echo "<tr>\n";
echo "<td width=200>$row->naam</td>\n";
echo "<td width=300 valign=\"middle\"><img src=\"img/graph.gif\" height=10 width=$width title=\"$row->naam: $row->aantal\"></td>\n";
echo "</tr>\n";
}
/* Sluit tabel */
echo "</table><p>\n";
}
/* Laat alles zien */
ShowStats("browser","Meeste gebruikte browsers",10);
ShowStats("os","Meest voorkomende OS");
ShowStats("pagina","Meest opgevraagde pagina's",25);
ShowStats("ref","Afkomst (referrer)",25);
ShowStats("screensize", "Schermresoluties",10);
ShowStats("screencolors", "Schermkleuren",10);
?>
$db = mysql_connect("localhost","","");
mysql_select_db("windsurfingwereld");
/* Bepaal begin- en einddatum van deze maand */
$begin_deze_maand = date("Ym") . "000000";
$eind_deze_maand = (date("Ym") + 1) . "000000";
/* Haal alle hits van deze maand op */
$sql = "SELECT COUNT(*) AS uniek, SUM(hits) AS hits,
SUBSTRING(datum, 7, 2) AS dag FROM ip
WHERE datum BETWEEN '$begin_deze_maand' AND '$eind_deze_maand'
GROUP BY dag ORDER BY dag ASC";
$result = mysql_query($sql) or
die(mysql_error());
$max = 1;
$h_totaal = 0;
$u_totaal = 0;
$aantal = 0;
while ($row = mysql_fetch_object($result))
{
$hits[$row->dag] = $row->hits;
$uniek[$row->dag] = $row->uniek;
if ($row->hits > $max)
$max = $row->hits; // Bepaal hoogste waard
$h_totaal += $row->hits;
$u_totaal += $row->uniek;
$aantal++;
}
/* Doorloop nu alle dagen van de maand */
echo "<table border=0 cellspacing=1><tr>";
for ($i = "01"; $i <= "32"; $i++)
{
$h_height = round($hits[$i] / $max * 200);
$u_height = round($uniek[$i] / $max * 200);
if ($h_height == 0) $h_height = 1;
if ($u_height == 0) $u_height = 1;
echo "<td valign=\"bottom\" align=\"center\"><img src=\"img/graph.gif\" width=8 height=$h_height title=\"Hits: $hits[$i]\">
<img src=\"img/graph.gif\" width=8 height=$u_height title=\"Unieke bezoekers: $uniek[$i]\" hspace=1></td>\n";
}
echo "</tr>\n<tr>\n";
for ($i = 1; $i <= 31; $i++)
{
echo "<td align=\"center\">$i</td>\n";
}
echo "</tr>\n</table><p>";
/* Extra's */
$h_gem = number_format($h_totaal / $aantal, 2, ",", ".");
$u_gem = number_format($u_totaal / $aantal, 2, ",", ".");
$pageviews = number_format($h_totaal / $u_totaal, 2, ",", ".");
echo "Het gemiddelde aantal hits is: <b>$h_gem</b><br>\n";
echo "Het gemiddelde aantal bezoekers is: <b>$u_gem</b><br>\n";
echo "Een gemiddelde bezoeker bekijkt <b>$pageviews</b> pagina's.<p>\n";
/*
Met $limit geeft je het maximale aantal items aan bijv. 5 als je alleen de top-5 wilt zien.
*/
function ShowStats($table, $desc, $limit = "")
{
global $db;
$limit = ($limit) ? "LIMIT 0, $limit" : "";
/* Maak tabel-kop */
echo "<table border=0 cellspacing=0 width=500>\n";
echo "<tr bgcolor=\"black\">\n";
echo "\t<td colspan=\"2\"><font color=\"white\"><b> $desc</b></font></td>\n";
echo "</tr>\n";
/* Inhoud - lees uit database */
$sql = "SELECT $table as naam, aantal FROM $table ORDER BY aantal DESC $limit";
$result = mysql_query($sql) or die(mysql_error());
$first = TRUE;
while ($row = mysql_fetch_object($result))
{
if ($first)
{
$max = $row->aantal;
$first = FALSE;
}
$width = round($row->aantal / $max * 300);
echo "<tr>\n";
echo "<td width=200>$row->naam</td>\n";
echo "<td width=300 valign=\"middle\"><img src=\"img/graph.gif\" height=10 width=$width title=\"$row->naam: $row->aantal\"></td>\n";
echo "</tr>\n";
}
/* Sluit tabel */
echo "</table><p>\n";
}
/* Laat alles zien */
ShowStats("browser","Meeste gebruikte browsers",10);
ShowStats("os","Meest voorkomende OS");
ShowStats("pagina","Meest opgevraagde pagina's",25);
ShowStats("ref","Afkomst (referrer)",25);
ShowStats("screensize", "Schermresoluties",10);
ShowStats("screencolors", "Schermkleuren",10);
?>
----------
-----stats.php-----
Code (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
84
85
86
87
88
89
90
91
92
93
94
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
84
85
86
87
88
89
90
91
92
93
94
<?
/* Database-connectie maken */
$db = mysql_connect("localhost","","");
mysql_select_db("windsurfingwereld");
/*
Dit script checkt of in de opgegeven tabel al een record
bestaat met dezelfde naam, zo ja, verhoogt die waarde met
één, zo niet, voegt een nieuw record toe met die naam, en
zet diens "aantal" waarde op één.
*/
function AddStats($table,$value)
{
global $db;
$sql = "SELECT id FROM $table WHERE $table='$value'";
$result = mysql_query($sql);
if (mysql_num_rows($result) > 0)
{
$id = mysql_result($result, 0, "id");
$sql = "UPDATE $table SET aantal=aantal+1 WHERE id='$id'";
}
else
{
$sql = "INSERT INTO $table ($table, aantal) VALUES ('$value','1')";
}
mysql_query($sql) or
die("Oops...");
return TRUE;
}
/* Browser-naam en versie */
if (eregi("MSIE ([0-9]+\.[0-9]+)", $_SERVER['HTTP_USER_AGENT'], $regs))
{
$naam = "Internet Explorer";
$versie = $regs[1];
}
elseif (eregi("Opera ([0-9]+\.[0-9]+)", $_SERVER['HTTP_USER_AGENT'], $regs))
{
$naam = "Opera";
$versie = $regs[1];
}
elseif (eregi("Mozilla/([0-9]+\.[0-9]+)", $_SERVER['HTTP_USER_AGENT'], $regs))
{
$naam = "Netscape";
$versie = $regs[1];
}
else
{
$naam = "Anders";
$versie = "";
}
/* OS-info */
if (eregi("(win|windows)[ ]*((nt)*[ /]*([0-9]+(\.?[0-9]+))*)", $HTTP_USER_AGENT, $regs))
$os = "Windows $regs[2]";
elseif (stristr($_SERVER['HTTP_USER_AGENT'], "Linux"))
$os = "Linux";
elseif (stristr($_SERVER['HTTP_USER_AGENT'], "Unix"))
$os = "Unix";
elseif (stristr($_SERVER['HTTP_USER_AGENT'], "Mac"))
$os = "Macintosh";
else
$os = "Anders";
/* Schrijf de stats naar de juiste tabellen */
AddStats("browser", "$naam $versie");
AddStats("os", $os);
AddStats("pagina", $pagina);
AddStats("ref", $ref);
AddStats("screensize", $ss);
AddStats("screencolors", $sc);
function AddHit()
{
global $db,$REMOTE_ADDR;
$ip = $REMOTE_ADDR; // $REMOTE_ADDR bevat IP-nummer
$nu = date("YmdHi"); // yyyymmdduumm, bijv. 200009021431
$uur_geleden = date("YmdHi", mktime(date("H") - 1, date("i"),0,date("m"), date("d"), date("Y")));
$sql = "SELECT id FROM ip WHERE ip='$ip' AND datum>$uur_geleden";
$result = mysql_query($sql);
if (mysql_num_rows($result) > 0)
{
$id = mysql_result($result, 0, "id");
$sql = "UPDATE ip SET datum='$nu', hits=hits+1 WHERE id='$id'";
}
else
{
$sql = "INSERT INTO ip (ip, datum, hits) VALUES ('$ip','$nu','1')";
}
mysql_query($sql) or die("Oops...");
return TRUE;
}
AddHit();
?>
/* Database-connectie maken */
$db = mysql_connect("localhost","","");
mysql_select_db("windsurfingwereld");
/*
Dit script checkt of in de opgegeven tabel al een record
bestaat met dezelfde naam, zo ja, verhoogt die waarde met
één, zo niet, voegt een nieuw record toe met die naam, en
zet diens "aantal" waarde op één.
*/
function AddStats($table,$value)
{
global $db;
$sql = "SELECT id FROM $table WHERE $table='$value'";
$result = mysql_query($sql);
if (mysql_num_rows($result) > 0)
{
$id = mysql_result($result, 0, "id");
$sql = "UPDATE $table SET aantal=aantal+1 WHERE id='$id'";
}
else
{
$sql = "INSERT INTO $table ($table, aantal) VALUES ('$value','1')";
}
mysql_query($sql) or
die("Oops...");
return TRUE;
}
/* Browser-naam en versie */
if (eregi("MSIE ([0-9]+\.[0-9]+)", $_SERVER['HTTP_USER_AGENT'], $regs))
{
$naam = "Internet Explorer";
$versie = $regs[1];
}
elseif (eregi("Opera ([0-9]+\.[0-9]+)", $_SERVER['HTTP_USER_AGENT'], $regs))
{
$naam = "Opera";
$versie = $regs[1];
}
elseif (eregi("Mozilla/([0-9]+\.[0-9]+)", $_SERVER['HTTP_USER_AGENT'], $regs))
{
$naam = "Netscape";
$versie = $regs[1];
}
else
{
$naam = "Anders";
$versie = "";
}
/* OS-info */
if (eregi("(win|windows)[ ]*((nt)*[ /]*([0-9]+(\.?[0-9]+))*)", $HTTP_USER_AGENT, $regs))
$os = "Windows $regs[2]";
elseif (stristr($_SERVER['HTTP_USER_AGENT'], "Linux"))
$os = "Linux";
elseif (stristr($_SERVER['HTTP_USER_AGENT'], "Unix"))
$os = "Unix";
elseif (stristr($_SERVER['HTTP_USER_AGENT'], "Mac"))
$os = "Macintosh";
else
$os = "Anders";
/* Schrijf de stats naar de juiste tabellen */
AddStats("browser", "$naam $versie");
AddStats("os", $os);
AddStats("pagina", $pagina);
AddStats("ref", $ref);
AddStats("screensize", $ss);
AddStats("screencolors", $sc);
function AddHit()
{
global $db,$REMOTE_ADDR;
$ip = $REMOTE_ADDR; // $REMOTE_ADDR bevat IP-nummer
$nu = date("YmdHi"); // yyyymmdduumm, bijv. 200009021431
$uur_geleden = date("YmdHi", mktime(date("H") - 1, date("i"),0,date("m"), date("d"), date("Y")));
$sql = "SELECT id FROM ip WHERE ip='$ip' AND datum>$uur_geleden";
$result = mysql_query($sql);
if (mysql_num_rows($result) > 0)
{
$id = mysql_result($result, 0, "id");
$sql = "UPDATE ip SET datum='$nu', hits=hits+1 WHERE id='$id'";
}
else
{
$sql = "INSERT INTO ip (ip, datum, hits) VALUES ('$ip','$nu','1')";
}
mysql_query($sql) or die("Oops...");
return TRUE;
}
AddHit();
?>
----------
'
Ik zou jullie heel erg dankbaar zijn! :-)
Er zijn nog geen reacties op dit bericht.