#1

wke

Routinier  (273 Punkte)  ·   männlich  ·   Deutschland  ·    Nachricht senden
 http://www.kleinstaedter.de

Zählt die Zugriffe je IP für heute und gesamt

Hallo zusammen, 

hier ein kleines PHP-Script, das die Zugriffe je IP (heute und gesamt) zählt und auf der Homepage anzeigt.

Wer will, darf das gerne erweitern (Woche, Monat, Jahr), aber ich denke, irgendwann wird die Kapazität der Datenbank erschöpft sein. Ich werde daher das Ganze mal beobachten und nach einiger Zeit eine Löschroutine einbauen, die Zugriffe < einer bestimmten Zeit wieder löscht.

Gruß und schönen Sonntag
Wolfgang
 

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
<?php
   /* *************************************************
      * Zugriffszähler in PHP - heute und gesamt      *
      * --------------------------------------------- *
      * Wolfgang Kessel - 01.04.2014                  *
      *************************************************
   */
 
$db_host = "";              # Der Datenbank-Host
$db_user = "root";          # Der Datenbank-Benutzer
$db_password = "";          # Das Passwort für die Datenbank
$db_name = "ksb";           # Der Datenbank-Name
$db_tbl = "zugriff";        # Der Tabellenname
 
 
$conn = mysql_connect($db_host,$db_user,$db_password) or die (mysql_error());
mysql_select_db($db_name, $conn) or die (mysql_error());
 
// Abfragen, ob Tabelle vorhanden ist
if (!mysql_query("SELECT * FROM $db_tbl"))
{
	    // Create table
        $sql = "CREATE TABLE $db_tbl
        (
        id int NOT NULL AUTO_INCREMENT,
        ip varchar(32) NOT NULL,
        time varchar(48),
        datum bigint(12),
        anzahl_heute int(6),
        anzahl_gesamt int(6),
        PRIMARY KEY (id)
        )";
        $result = mysql_query($sql);
}
 
$ip = $_SERVER["REMOTE_ADDR"];
$ipges = "gesamt";
$today = strtotime("00:00:00");                  // Zeit in Sekunden ab 1.1.1970 für Heute 00 Uhr
$heute = date("d.m.Y", $today);                  // Zeit TT.NN.JJJJ für Heute
 
$sql = mysql_query("SELECT * FROM $db_tbl where ip = '$ip'");
$row = mysql_fetch_object($sql) or  mysql_query("INSERT INTO $db_tbl SET ip='$ip', time='$heute', datum='$today', anzahl_heute=0, anzahl_gesamt=1");
 
$sql = mysql_query("SELECT * FROM $db_tbl where ip = '$ip'");
$row = mysql_fetch_object($sql);
 
$anzahl_heute = $row->anzahl_heute;
$anzahl_gesamt = $row->anzahl_gesamt;
 
if ($row->datum == $today)
   {
     $anzahl_heute = $anzahl_heute + 1;
   }
 else
   {
     $anzahl_heute = 1;
     $anzahl_gesamt = $anzahl_gesamt + 1;
   }
 
$sqlab = "update $db_tbl set time='$heute',
                             datum='$today',
                             anzahl_heute = $anzahl_heute,
                             anzahl_gesamt = $anzahl_gesamt
                             where ip = '$ip'";
mysql_query($sqlab);
 
echo "Zugriffe heute " ;
echo $anzahl_heute . "<br>";
echo "Zugriffe gesamt " ;
echo $anzahl_gesamt . "<br>";
?>

 


Dieser Beitrag wurde bereits 2 mal bearbeitet, zuletzt von »Volker W.« (06.04.2014, 14:32)
#2
Avatar

Unbekannt

Gelöscht

Niedlich.

Du solltest das Skript aber noch ein wenig Zukunfts-sicherer machen und von mysql auf mysqli umstellen, da mysql seit PHP 5.5.0 nicht mehr unterstützt wird (depreciated).

#3

wke

Routinier  (273 Punkte)  ·   männlich  ·   Deutschland  ·    Nachricht senden
 http://www.kleinstaedter.de

Danke für den Hinweis, aber was soll ich mir unter "niedlich" vorstellen?


Dieser Beitrag wurde bereits 1 mal bearbeitet, zuletzt von »wke« (06.04.2014, 11:55)
#4

Paulemann

Hero  (746 Punkte)  ·   männlich  ·   Deutschland  ·    Nachricht senden
 http://www.webdesign-bf.de

Seit 5.4.0 Tumultus.

----------------
Beitrag hinfällig, da ich glaube, da etwas verwechselt zu haben.


Gruß

Paulemann

Webdesign-BF - Projektbetreuung und ein wenig mehr...


Dieser Beitrag wurde bereits 1 mal bearbeitet, zuletzt von »Paulemann« (06.04.2014, 19:56)
#5

Volker W.

Administrator  (6664 Punkte)  ·   männlich  ·   Deutschland  ·    Nachricht senden
 https://www.warmers.de  ·   vwarmers  ·   vwarmers  ·   VolkerWarmers  ·   volkerw68

Also ich finde das Script keinesfalls "niedlich", sondern ziemlich gut und erwachsen. Vielleicht erklärt Tumultus uns kurz, was er damit meint oder paßt das Script direkt auf den neuesten technischen Stand an, wenn diesbezüglich dringender Bedarf besteht.

@wke:

Vielen Dank für das Bereitstellen des Scriptes an die Community. Ich werde das Thema wie gehabt als [Tipp] und "wichtig" markieren, damit es etwas ins Auge fällt.

Ich freue mich sehr über Dein Engagement hier. Weiter so! :)


Viele Grüße,
Volker

Volker W. Musik & Sounds  ·  Facebook  ·  Google+  ·  Twitter  ·  Instagram  ·  StayFriends  ·  LinkedIn  ·  XING

Hilfe-Anfragen per PN, E-Mail usw. werden ab sofort nicht mehr beantwortet. Genau dafür ist dieses Forum da. Vielen Dank!

#6
Avatar

Unbekannt

Gelöscht

Heh, was ist denn mit Euch los? Seit wann ist niedlich denn etwas negatives? Selbst der Duden rueckt es in ein positives Licht:

niedlich
allerliebst, anmutig, apart, bezaubernd, charmant, drollig, entzückend, herzig, hinreißend, hübsch, lieb, liebenswert, lieblich, nett, possierlich, reizend, reizvoll, rührend, zauberhaft; (umgangssprachlich) goldig, putzig, zum Anbeißen, zum Fressen; (emotional) süß; (ostösterreichisch mundartlich) bagschierlich

Ne, echt jetze! Ihr solltet echt aufhoeren, ueberall was zwischen den Zeilen hineinzuinterpretieren!

#7

vicanus

Mitglied  (48 Punkte)  ·   männlich  ·   Deutschland  ·    Nachricht senden
 http://bernd-trede.de

joh, ich fand das Script von Wolfgang (wke) einfach und gut. Das muss doch in den normalen Ablauf von W2D bzw. Web8 einzubauen gehen, Ich habe mir die Script Dateien des Plugin vorgenommen und kann so weiterhin in web8 den Zugriffszähler einbauen. Voraussetzung ist hier natürlich eine Mysql-Datenbank. Als erstes bitte die Original-Dateien sichern.

Im Verzeichnis "C:\Program Files (x86)\SIQUANDO\Web 8\plugins\SQWPluginCounter" habe ich die Datei "SQWPluginCounterScript.inc" geändert. Die gilt dann für _ALLE_ zukünftigen Veröffentlichungen _ALLER_ Projekte.

<?php
 
$counttotal=<cc:param name="start">;
$counttoday=0;
$lastdate="";
$today=date("d.m.Y");
$mytext="<cc:param name="text">";
$myfile=basename("<cc:param name="file">", ".dat");
$myhide=<cc:param name="hide">;
$mystyle="<cc:param name="style">";
$myplaintext="<cc:param name="plaintext">";
$myunique=<cc:param name="unique">;
$pfad=$_SERVER['PHP_SELF'];
$host=$_SERVER['HTTP_HOST']; 
if (substr($host,0,4)=="www.") {
	$host = substr($host,4,99);
}
// Hier eigene Anmeldedaten eingeben!!
$db_host = "";       # Der Datenbank-Host
$db_user = "";       # Der Datenbank-Benutzer
$db_password = "";   # Das Passwort für die Datenbank
$db_name = "";       # Der Datenbank-Name
$db_tbl = "zugriffe";# Der Tabellenname
  
$conn = mysql_connect($db_host,$db_user,$db_password) or die (mysql_error());
mysql_select_db($db_name, $conn) or die (mysql_error());
 
// Abfragen, ob Tabelle vorhanden ist
if (!mysql_query("SELECT * FROM $db_tbl"))
{
	    // Create table
        $sql = "CREATE TABLE $db_tbl
        (
        id int NOT NULL AUTO_INCREMENT,
        host varchar(64) NOT NULL,
		pfad varchar(255) NOT NULL,
        cname  varchar(48),
        lastdate varchar(10),
        counttoday int,
        counttotal int,
        PRIMARY KEY (id)
        )";
        $result = mysql_query($sql);
}
 
$select =  "SELECT * FROM $db_tbl where host = '$host' AND pfad = '$pfad' AND cname = '$myfile'";
//echo $select.'<br>';
$sql = mysql_query($select);
$select = "INSERT INTO $db_tbl SET host='$host', pfad = '$pfad', cname='$myfile', lastdate='$today', counttoday=0, counttotal=1";
//echo $select.'<br>';
$row = mysql_fetch_object($sql) or  mysql_query($select);
 
$sql = mysql_query("SELECT * FROM $db_tbl where host = '$host' AND pfad = '$pfad' AND cname = '$myfile'");
$row = mysql_fetch_object($sql);
 
$counttoday = $row->counttoday;
$counttotal = $row->counttotal;
$lastdate = $row->lastdate;
 
if (!array_key_exists('w2dplugincounter<cc:param name="uid">',$_COOKIE) | !$myunique)
{
$counttotal++;
 
if (strcmp($lastdate,$today)==0) {
	$counttoday++;
} else {
	$counttoday=1;
}
}
 
$mytext=str_replace("[t]",$counttotal,$mytext);
$mytext=str_replace("[d]",$counttoday,$mytext);
 
if ($myhide==0) {
	if ($mystyle=="") {
		echo ("<p>".$mytext."</p>");
	} else {
		$digits=substr("00000000".$counttotal,-8);
 
		echo("<p align=\"center\">");
 
		if ($myplaintext==0) {
			for ($i=0;$i<8;$i++) {
				$digit=substr($digits,$i,1);
				echo ("<img src=\"".$mystyle.$digit.".gif\" alt=\"".$digit."\"/>");
			}	
		} else {
			echo($digits);
		}
		echo("</p>\n");		
	}
}
 
if ($myunique) {
	echo('<script type="text/javascript">document.cookie = "w2dplugincounter<cc:param name="uid">=1";</script>');
}
 
 
$sqlab = "update $db_tbl set lastdate='$today',
                             counttoday = $counttoday,
                             counttotal = $counttotal
                             where host = '$host' AND pfad = '$pfad' AND cname = '$myfile'";
mysql_query($sqlab);
 
 
?>

Ja, Tumultus, mysqli wäre besser, habe es aber "schnell mal" mit dem Code von wke gemischt. Ich habe auch die "SQWPluginCounterAdmin.inc" geändert, aber die brauche ich nicht, da ich eine eigene Auswertung (aller Zähler) als HTML-Absatz in meinen geschützen Bereich eingebaut habe:

<?php
// Eigene Anmeldedaten eingeben!!
	$db_host = "";    # Der Datenbank-Host
	$db_user = "";    # Der Datenbank-Benutzer
	$db_password = "";   # Das Passwort für die Datenbank
	$db_name = "";   # Der Datenbank-Name
	$db_tbl = "zugriffe";           # Der Tabellenname
 
	$db_link = mysqli_connect($db_host,$db_user,$db_password,$db_name) or die (mysqli_error());
	$sql = "SELECT * FROM $db_tbl ORDER by counttotal DESC, host";
	$db_erg = mysqli_query( $db_link, $sql );
	if ( ! $db_erg )
	{
	  die('Ungültige Abfrage: ' . mysqli_error());
	}
	echo ("<table width='96%'>\n");
	echo ("<tr>\n");
	echo ("<td>Domain</td>");
	echo ("<td>Pfad</td>");
	echo ("<td>Datum</td>");
	echo ("<td>Tag</td>");
	echo ("<td>Total</td>");
	echo ("<td>Z&auml;hler</td>\n");
	echo ("</tr>\n");
 
	while ($row = mysqli_fetch_array( $db_erg, MYSQL_ASSOC))
	{
		$counttoday = $row['counttoday'];
		$counttotal = $row['counttotal'];
		$lastdate = $row['lastdate'];
		$cname = $row['cname'];
		$host = $row['host'];
		$pfad = $row['pfad'];
 
		echo ("<tr>\n");
		echo ("<td>".$host."</td>");
		echo ("<td>".$pfad."</td>");
		echo ("<td>".$lastdate."</td>");
		echo ("<td>".$counttoday."</td>");
		echo ("<td>".$counttotal."</td>");
		echo ("<td>".$cname."</td>\n");
		echo ("</tr>\n");
	}
 
	mysqli_free_result( $db_erg );
 
	echo ("</table>\n");
}
 
?>

Da die Änderung oben für alle Projekte mit Web8 gilt, hat man dann eine Übersicht über alle bestückten Projekte.

 Kann das jemand gebrauchen?

 

#8

Thomas

Co-Admin  (1873 Punkte)  ·   männlich  ·   Deutschland  ·    Nachricht senden
 https://siquando-designs.de

Ich persönlich kann nicht verstehen warum solche Zugriffszähler so beliebt sind, erst recht wenn man auf den Seiten "Zugriffe heute: 1" liest, das ist wirklich niedlich (und nicht selten).


Viele Grüße
Thomas

siquando-designs.de (ganz NEU: Santa Cruz Pro für Pro Web 3 und Apollon 10 für Siquando Shop, Tutorials, Templateübersichten & Support für Shop 10 + Pro Web 3)

#9

vicanus

Mitglied  (48 Punkte)  ·   männlich  ·   Deutschland  ·    Nachricht senden
 http://bernd-trede.de

Du kannst ja auch den "unsichtbaren Zähler" verwenden. Dann ist es evtl. nicht so peinlich. Aber auch dann sollte die Auswertung nach den Voreinstellungen in Web8 genau sein, Mit meiner Version kannst du dann entscheiden, ob Du die Domain meistbietens verkaufst. Die Einstellungen kannst Du weiterhin in Web8 machen

#10
Avatar

Unbekannt

Gelöscht

Na ja, ein unsichtbarer Counter bringt dann aber doch nicht viel. Darueber hinaus bietet heutzutage so ziemlich jedes Webhosting Paket detaillierte Besucher Statistiken, welche sehr ausgereift sind und weit darueber hinaus gehen, wie viele Besucher ich heute (oder in total) hatte. Zum Beispiel kann man da nachschauen, aus welchen Laendern die Seitenbesucher kommen, auf welchen Seiten sie verweilt haben, welche Seiten nie oder nur wenig angesurft werden (und demzufolge ein Makeover benoetigen) usw ...

Schaut euch doch mal auf eurem Webhosting Account um ob ihr da so etwas wie AWStats oder aehnliches findet.

Man muss ja das Rad nicht unbedingt immer wieder neu erfinden. ;-)

#11

vicanus

Mitglied  (48 Punkte)  ·   männlich  ·   Deutschland  ·    Nachricht senden
 http://bernd-trede.de

Naja, mir reicht das. Mit meiner Auswertung (2. Script) habe ich z.B. eine kleine Hitliste, welche Seiten am meisten gewählt werden. Dabei habe ich festgestellt, dass die Mobil-Seiten nur 6% der Gesamtzugriffe ausmachen. Lohnt sich dann die Arbeit für "Smartphones" überhaupt?


Dieser Beitrag wurde bereits 1 mal bearbeitet, zuletzt von »vicanus« (14.05.2015, 22:20)
2554 Aufrufe | 11 Beiträge