#1

wke

Routinier  (280 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>";
?>

 

#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  (280 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  (842 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.


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

Volker W.

Administrator  (7794 Punkte)  ·   männlich  ·   Deutschland  ·   Nachricht senden
 https://www.warmers.de  ·   vwarmers  ·   vwarmers  ·   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

Über mich  ·  Volker W. Musik & Sounds  ·  Facebook  ·  Twitter  ·  Instagram  ·  StayFriends  ·  LinkedIn  ·  XING

#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

Eroberer  (51 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

Moderator  (2298 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 (NEU: KARO Flex Layout, Santa Cruz Pro für Pro Shop und Apollon 11 für Siquando Shop, Templateübersicht & Support für Shop 11 + Pro Web 8)

#9

vicanus

Eroberer  (51 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

Eroberer  (51 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)
#12

Silke Zurbrüggen-Brinkert

Neuling  (1 Punkt)  ·   weiblich  ·   Deutschland  ·   Nachricht senden
 http://www.huntesetter.de  ·   Silke Zurbrüggen-Brinkert

Moin, Moin,

ich bin absoluter Laie und verstehe hier garnichts. Ich bin schon froh wenn ich das ganze irgendwie bedienen kann.

Nun habe ich ein Problem mit dem elenden Zugriffszähler, er zählt nicht so wie ich es mir vorstelle und springt mal vor und mal zurück, ohne erklärlichen Grund. Habe ihn nun in den letzten Jahren mehrfach gestartet und auch wieder gelöscht weil es einfach nicht klappen wollte. Habe mir nun das Web 10 heruntergeladen und es auch jetzt noch einmal versucht........klappt nicht so ein Mist.

Hat jemand Zeit oder Lust mir das Problem evtl. zu erklären, wahrscheinlich liegt es an mir!! Brauche Hilfe die mich durchs Programm führt...

Viele Grüße

 

S. Zurbüggen-Brinkert

#13

W2D Fan

Co-Administratorin  (4549 Punkte)  ·   weiblich  ·   Niederlande  ·   Nachricht senden

In dieses Thema geht es um ProWeb, die online Version.

Erstelle für deine Fragen bitte ein neues Thema im Siquando Web Unterforum, hier ist es fehl am Platz.

Danke für dein Verständnis.

 


Gruß,
Marjorie

Hilfe ist nicht selbstverständlich. Deshalb halte ich ein "Dankeschön", nachdem jemandem geholfen wurde, für überaus angebracht und höflich.

#14

JoergB

Forum-Sponsor  (121 Punkte)  ·   männlich  ·   Deutschland  ·   Nachricht senden
 https://www.benzingwerbung.de

Marjorie,

Silke hat sich nur in das Thema "Zugriffszähler" eingeklinkt, was ich gut finde! Sei bitte etwas freundlicher zu den Forenmitgliedern! Es mag dran liegen, dass du eine andere Muttersprache hast (großen Respekt für deine Deutsch-Kenntnisse!! Ehrlich!), aber es könnte hier falsch verstanden werden. Wir sind alle nur Menschen...

Viele Grüße!
Jörg


Dieser Beitrag wurde bereits 2 mal bearbeitet, zuletzt von »JoergB« (11.03.2020, 22:55)
#15

W2D Fan

Co-Administratorin  (4549 Punkte)  ·   weiblich  ·   Niederlande  ·   Nachricht senden

Ich glaube nicht Jörg dass ich mich dir gegenüber verantworten muß für etwas was schon seit dem Anfang dieses Forums von sowohl Volker als michselbst so aufrechterhalten wird. Außerdem will ich hier KEINE Diskussion lostreten denn dafür ist diesen Beitrag nicht gemeint.

Ich werde mich darum beschränken auf ein Erklärung für das Warum und Wieso.

Derjenige der den Beitrag in 2014 erstellt hat, hat dies im ProWeb Unterforum getan, weil er mit ProWeb arbeitet. Die Frage von Silke bezieht sich jedoch auf Web 10 und hat aus dem Grund mit den Anfangsbeitrag nichts zu tun.

Wir möchten keine Sammelbeiträge, denn jeder der eine ähnliche Frage hat, soll die Antwort auch über die Suchfunktion finden können. Wenn jeder seine/ihre Frage kreuz und quer stellt wird das finden von Antworte schier unmöglich und wird es hier ein Chaos. Volker hat nicht umsonst für jedes Programm ein eigenes Unterforum erstellt.

 


Gruß,
Marjorie

Hilfe ist nicht selbstverständlich. Deshalb halte ich ein "Dankeschön", nachdem jemandem geholfen wurde, für überaus angebracht und höflich.

#16

JoergB

Forum-Sponsor  (121 Punkte)  ·   männlich  ·   Deutschland  ·   Nachricht senden
 https://www.benzingwerbung.de

...ja, du hast recht Marjorie. Ich entschuldige mich bei dir!!

Es war schon spät gestern. Und wenn man ungefähr 12 Stunden erfolglos versucht hat, eine Website hochzuladen, kann man schon leicht genervt sein.

Viele Grüße!
Jörg

#17

W2D Fan

Co-Administratorin  (4549 Punkte)  ·   weiblich  ·   Niederlande  ·   Nachricht senden

Kein Problem, alles ist gut. Ich bin nicht nachtragend 🙂


Gruß,
Marjorie

Hilfe ist nicht selbstverständlich. Deshalb halte ich ein "Dankeschön", nachdem jemandem geholfen wurde, für überaus angebracht und höflich.

12670 Aufrufe | 17 Beiträge