yubb.de-Logo
Tutorials
yubb@yubb
yubbService
Inside yubb

Counter mit Statistik



Zuerst benötigen wir dafür eine MySQL-Tabelle counter:
Code:
CREATE TABLE `counter` (
`cat` varchar(20) NOT NULL default '',
`system` varchar(20) NOT NULL default '',
`value` int(5) NOT NULL default '0'
) TYPE=MyISAM;

INSERT INTO `counter` VALUES ('main', 'user', 35);
INSERT INTO `counter` VALUES ('browser', 'Lynx', 0);
INSERT INTO `counter` VALUES ('browser', 'Opera', 6);
INSERT INTO `counter` VALUES ('browser', 'Konqueror', 0);
INSERT INTO `counter` VALUES ('browser', 'MSIE', 4);
INSERT INTO `counter` VALUES ('browser', 'Mozilla', 24);
INSERT INTO `counter` VALUES ('browser', 'Mosaic', 0);
INSERT INTO `counter` VALUES ('browser', 'Bot', 0);
INSERT INTO `counter` VALUES ('browser', 'Other', 1);
INSERT INTO `counter` VALUES ('os', 'Windows', 30);
INSERT INTO `counter` VALUES ('os', 'MacOS', 1);
INSERT INTO `counter` VALUES ('os', 'Linux', 3);
INSERT INTO `counter` VALUES ('os', 'NetBSD', 0);
INSERT INTO `counter` VALUES ('os', 'OpenBSD', 0);
INSERT INTO `counter` VALUES ('os', 'FreeBSD', 0);
INSERT INTO `counter` VALUES ('os', 'BSD', 0);
INSERT INTO `counter` VALUES ('os', 'SunOS', 0);
INSERT INTO `counter` VALUES ('os', 'IRIX', 0);
INSERT INTO `counter` VALUES ('os', 'BeOS', 0);
INSERT INTO `counter` VALUES ('os', 'OS/2', 0);
INSERT INTO `counter` VALUES ('os', 'AIX', 0);
INSERT INTO `counter` VALUES ('os', 'AmigaOS', 0);
INSERT INTO `counter` VALUES ('os', 'DOS', 0);
INSERT INTO `counter` VALUES ('os', 'Other', 1);

CREATE TABLE `ip` (
`ip` varchar(15) NOT NULL default '',
`time` int(11) NOT NULL default '0',
PRIMARY KEY (`ip`)
) TYPE=MyISAM;


Hier erstmal der komplette Code für eine Statistik:
PHP-Datei:
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
<?php
function getip() {
   if(
getenv("HTTP_X_FORWARDED_FOR"))
      
$ip getenv("HTTP_X_FORWARDED_FOR");
   else
      
$ip getenv("REMOTE_ADDR");
   return 
$ip;
// Gibt die aktuelle IP zurück

$barrier=time()-86400;
$now=time();
$ip getip();

mysql_query('DELETE FROM _ip WHERE time<'.$barrier.''); // Löscht alles was älter als 86400 Sekunden ist.
$result=mysql_query('SELECT ip FROM _ip WHERE ip="'.$ip.'"');
if(@!
mysql_fetch_array($result)) // Prüft ob die Aktuelle IP schon in der Datenbank steht...
{
   
mysql_query('INSERT INTO _ip (ip, time) VALUES ("'.$ip.'", "'.$now.'")');
   
   
// Prüft den User Agent nach Browsern
   
if(ereg('Lynx'$_SERVER['HTTP_USER_AGENT'])) 
   {
      
$browser 'Lynx';
   } elseif(
ereg('Opera'$_SERVER['HTTP_USER_AGENT'])) 
   {
      
$browser 'Opera';
   } elseif(
ereg('Konqueror'$_SERVER['HTTP_USER_AGENT'])) 
   {
      
$browser 'Konqueror';
   } elseif(
ereg('MSIE'$_SERVER['HTTP_USER_AGENT']) )
   {
      
$browser 'MSIE';
   } elseif(
ereg('Mozilla'$_SERVER['HTTP_USER_AGENT']) || ereg('Netscape'$_SERVER['HTTP_USER_AGENT']) || ereg('Firefox'$_SERVER['HTTP_USER_AGENT'])) 
   {
      
$browser 'Mozilla';
   } elseif(
eregi('Mosaic'$_SERVER['HTTP_USER_AGENT']))
   {
      
$browser 'Mosaic';
   } elseif(
eregi('Bot'$_SERVER['HTTP_USER_AGENT']) || eregi('Google'$_SERVER['HTTP_USER_AGENT']) || eregi('Spider'$_SERVER['HTTP_USER_AGENT']) || eregi('Crawler'$_SERVER['HTTP_USER_AGENT']) || eregi('Fireball'$_SERVER['HTTP_USER_AGENT'])) 
   {
      
$browser 'Bot';
   } else {
      
$browser 'Other';
   }

   
// Prüft den User Agent nach Betriebssystemen
   
if(ereg('Win'$_SERVER['HTTP_USER_AGENT'])) {
      
$os 'Windows';
   } elseif((
ereg('Mac'$_SERVER['HTTP_USER_AGENT'])) || (ereg('PPC'$_SERVER['HTTP_USER_AGENT']))) 
   {
      
$os 'MacOS';
   } elseif(
ereg('Linux'$_SERVER['HTTP_USER_AGENT'])) 
   {
      
$os 'Linux';
   } elseif(
ereg('BSD'$_SERVER['HTTP_USER_AGENT'])) 
   {
      if(
ereg('NetBSD'$_SERVER['HTTP_USER_AGENT'])) 
      {
         
$os 'NetBSD';
      } elseif(
ereg('OpenBSD'$_SERVER['HTTP_USER_AGENT'])) 
      {
         
$os 'OpenBSD';
      } elseif(
ereg('FreeBSD'$_SERVER['HTTP_USER_AGENT'])) 
      {
         
$os 'FreeBSD';
      } else {
         
$os 'BSD';
      }
   } elseif(
ereg('SunOS'$_SERVER['HTTP_USER_AGENT']) || ereg('Solaris'$_SERVER['HTTP_USER_AGENT'])) 
   {
      
$os 'SunOS';
   } elseif(
ereg('IRIX'$_SERVER['HTTP_USER_AGENT'])) 
   {
      
$os 'IRIX';
   } elseif(
ereg('BeOS'$_SERVER['HTTP_USER_AGENT']) || ereg('Zeta'$_SERVER['HTTP_USER_AGENT'])) 
   {
      
$os 'BeOS';
   } elseif(
ereg('OS/2'$_SERVER['HTTP_USER_AGENT'])) 
   {
      
$os 'OS/2';
   } elseif(
ereg('AIX'$_SERVER['HTTP_USER_AGENT'])) 
   {
      
$os 'AIX';
   } elseif(
ereg('Amiga'$_SERVER['HTTP_USER_AGENT'])) 
   {
      
$os 'AmigaOS';
   } elseif(
ereg('DOS'$_SERVER['HTTP_USER_AGENT'])) 
   {
      
$os 'DOS';
   } else {
      
$os 'Other';
   }
   
   
// Erhöt den Wert des Betriebssystems/Browsers um 1...
   
mysql_query('UPDATE _counter SET value = value+1 WHERE system="user" AND cat="main"');
   
mysql_query('UPDATE _counter SET value = value+1 WHERE system="'.$browser.'" AND cat="browser"');
   
mysql_query('UPDATE _counter SET value = value+1 WHERE system="'.$os.'" AND cat="os"');
}
?>


Wenn das Script aufgerufen wird erhöht sich der Wert von 'user' um eins und Zählt so den User. Dann Prüft das Script $_SERVER['HTTP_USER_AGENT'] auf eine Übereinstimmung mit den Browsern und den Betriebssystemen wenn ein Browser bzw. Betriebssystemen erkannt wurde erhöht es den Wert der entsprechenden Spalte um eins.

Zum ausgeben der Daten kann man dieses Script nehmen:
PHP-Datei:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$query
=mysql_query('SELECT value FROM counter WHERE system="user"');
while(
$row=mysql_fetch_object($query)) {
  echo 
"User: $row->value<br><br>\n";
}

echo 
"<br>Browser:<br>\n";
$query=mysql_query('SELECT system, value FROM counter WHERE cat="browser"');
while(
$row=mysql_fetch_object($query))
  echo 
"$row->system $row->wert<br>\n";
}

echo 
"Betriebssysteme:<br>\n";
$query=mysql_query('SELECT system, value FROM counter WHERE cat="os"');
while(
$row=mysql_fetch_object($query))
  echo 
"$row->system $row->wert<br>\n";
}
?>




Geschrieben von Plutonium am 04.08.2004 (9302x gelesen)
weiterempfehlen weiterempfehlen   Druckversion Druckversion   kommentieren kommentieren

sowas suche ich und bitte um beantwortung von ein paar fragen:
- wie sieht das mit speichern in eine cvs.datei aus [statt mysql]
- wie baue ich das in eine include variante ein -
jeder klick auf ein download link sowie bild soll gezahält werden.

danke im voraus ------------

Geschrieben von sonnenenkind
zur include variante: include("counter_datei.php");
zum rest musst dich selber erkundigen....
Geschrieben von Plutonium