Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Website-Counter selbst programmieren (https://www.delphipraxis.net/120967-website-counter-selbst-programmieren.html)

Thomas F 19. Sep 2008 17:21


Website-Counter selbst programmieren
 
Hallo,

ich wollte für meine Website einen Counter selbst programmieren.

Allerdings nicht einen , der einfach nur um eins nach oben zählt, sondern

bei dem ich auch noch einige Statistiken erstellen kann.

Wer z.B. zu welcher Tageszeit angeklickt hat,

wieviele Besucher im August da waren und so weiter.

Kann mir einer sagen wie ich das hinbekommen ?

dominikkv 19. Sep 2008 17:28

Re: Counter
 
Über PHP mit einer Datenbank, in der du bei jedem Klick die Uhrzeit usw speicherst

Thomas F 19. Sep 2008 17:30

Re: Counter
 
Zitat:

Zitat von dominikkv
Über PHP mit einer Datenbank, in der du bei jedem Klick die Uhrzeit usw speicherst

Ja, das hab ich schon gewußt

Aber die Datenbank muß doch dann irgendwo im Netz oder auf der Website unsichtbar gespeichert

werden , oder ?

Meflin 19. Sep 2008 17:33

Re: Counter
 
Das ist eines der Themen, zu denen sich irgendwie sehr viele Leute berufen fühlen, ein Tutorial zu schreiben :lol:

Bei Google suchenPHP Counter Tutorial

Wenn du da nicht fündig wirst, ist dir nicht mehr zu helfen :zwinker:

dominikkv 19. Sep 2008 17:34

Re: Counter
 
Du musst selbst wissen ob bei deinem Webspace eine Datenbank dabei ist...

Thomas F 19. Sep 2008 17:40

Re: Counter
 
Bei Strato steht dass PHP und WebDatabase Manager dabei sind.

Noch ne Frage

Ohne PHP und ohne Database kann man wahrscheinlich nur ganz einfache Counter einsetzen , oder ? ? ?

DeddyH 19. Sep 2008 17:43

Re: Counter
 
Dürfte zumindest schwierig werden, das aufzubohren.

Meflin 19. Sep 2008 17:43

Re: Counter
 
Zitat:

Zitat von Thomas F
Ohne PHP und ohne Database kann man wahrscheinlich nur ganz einfache Counter einsetzen , oder ? ? ?

Naja, es gibt auch recht umfangreiche Counter, die statt mit Datenbanken mit Dateien arbeiten. Aber wenn du was selbergemachtes willst, kommst du um eine serverseitige Programmiersprache wie PHP nicht herum.

Alternativ könntest du aber auch auf Services wie Google Analytics (auch da gibt es seeeehr viele Anbieter) zurückgreifen. Einfach ein kleines Script (JavaScript) in die Seite eingebunden, und schwupps bekommst du eine Monsterstatistik ;)

Matze 19. Sep 2008 18:02

Re: Counter
 
Ich denke auch, dass für dich ein Counter-Service das beste sein wird, da du dich nicht sonderlich gut mit PHP + MySQL auskennst, wenn ich das mal so interpretieren darf. ;)

Der Nachteil ist halt, dass bsp. bei Google Analytics die Besucher JavaScript aktiviert haben müssen und du - rechtlich gesehen - einen Hinweis anzeigen musst, dass die IP des Besuchers an Dritte weitergegeben wird. In der Praxis machen das allerdings die wenigstens, würde ich sagen. Dafür kannst du es sehr einfach bei dir einbinden.

Thomas F 19. Sep 2008 18:05

Re: Counter
 
Ich könnte aber auch nur die Log-Files der Website runterladen und auswerten, da steht doch alles drin , oder ?

dominikkv 19. Sep 2008 18:08

Re: Counter
 
Zitat:

Zitat von Thomas F
Ich könnte aber auch nur die Log-Files der Website runterladen und auswerten, da steht doch alles drin , oder ?

Viel Spass damit -.-

jokerfacehro 19. Sep 2008 18:23

Re: Counter
 
also in php solltest du schon etwas bewandert sein. in mysql reicht da anfängerwissen. du musst nur ne datenbank, mit ner tabelle anlegen. die tabelle enthält ipadresse und timestamp.

du musst also nur wissen wie man ne DB und ne table anlegt, die füllt und datensätze ausliest und wie man mit WHERE umgeht.

mit nem DB manager wie phpmyadmin wird das ganze nicht so schwierig sein, vor allem zeigt es jeden befehl an wodurch du, durch learning by doing schon ne menge rausbekommst.

Gruß Jokerface

dominikkv 19. Sep 2008 18:27

Re: Counter
 
Da ich grad ein bisschen Zeit übrig hab und selbst grade PHP lerne hab ich mal ein Beispiel geschrieben wie soetwas mit einer Datenbank aussehen könnte:

Und dann die Abfrage
Code:
<?php
  mysql_connect("localhost", "Benutzername", "Passwort") or die // localhost bzw Adresse des DB-Servers
    ("Keine Verbindung möglich");
    
  mysql_select_db("MeineDatenbank") or die
    ("Die Datenbank existiert nicht");
 
  $abfrage = 'SELECT * FROM `MeineTabelle` ORDER by id DESC LIMIT 1';
  $ergebnis = mysql_query($abfrage);
  $row = mysql_fetch_object($ergebnis); // in row steht der letzte datensatz
      
  $count = $row->ID;
  $timestamp = $row->Time;
  $ip = $row->IP;
  mysql_free_result($ergebnis);    
 
  $datum = date("d.m.Y", $timestamp);
  $uhrzeit = date("H:i", $timestamp);
  echo "$count mal wurde diese Seite schon aufgerufen, zuletzt am $datum - $uhrzeit mit der IP $ip";
 
  $timestamp = time();
  $ip = $_SERVER['REMOTE_ADDR'];
  $abfrage = "INSERT INTO MeineTabelle (Time, IP) VALUES ('$timestamp', '$ip')";  
  mysql_query($abfrage);
?>
Es sollte allerdings schon ein Datensatz in der DB sein, oder anders ausgedrückt: beim ersten mal crasht der Code :zwinker:

DP-Maintenance 19. Sep 2008 18:52

DP-Maintenance
 
Dieses Thema wurde von "Matze" von "Internet / LAN / ASP.NET" nach "Programmieren allgemein" verschoben.
Da es nicht um Delphi geht, verschiebe ich das noch schnell.

Luckie 19. Sep 2008 19:07

Re: Counter
 
Könntest du den Titel bitte etwas aussagekräftiger gestallten? Counter ist so ziemlich nichts sagend.

Thomas F 19. Sep 2008 20:22

Re: Counter
 
Zitat:

Zitat von Meflin
Zitat:

Zitat von Thomas F
Ohne PHP und ohne Database kann man wahrscheinlich nur ganz einfache Counter einsetzen , oder ? ? ?

Naja, es gibt auch recht umfangreiche Counter, die statt mit Datenbanken mit Dateien arbeiten. Aber wenn du was selbergemachtes willst, kommst du um eine serverseitige Programmiersprache wie PHP nicht herum.

Alternativ könntest du aber auch auf Services wie Google Analytics (auch da gibt es seeeehr viele Anbieter) zurückgreifen. Einfach ein kleines Script (JavaScript) in die Seite eingebunden, und schwupps bekommst du eine Monsterstatistik ;)

Das Google Analytics könnte ich nehmen, wenn das wirklich so tolle Statitiken auswirft.

Aber braucht man da PHP und Database ?

jokerfacehro 19. Sep 2008 20:34

Re: Website-Counter selbst programmieren
 
einfächer wäre den mysql befehl count zu nutzen ;)

Delphi-Quellcode:
SELECT COUNT(*) FROM table
und um das zum beispiel für einen bestimmten tag rauszubekommen:

Delphi-Quellcode:

<?
$tagesanfang=tageszeit von tag.monat.jahr.00:00:01 in timestamp umwandeln;
$tagesende=tageszeit von tag.monat.jahr.23:59:59 in timestamp umwandeln;

$result=mysql_query("SELECT COUNT(*) FROM table WHERE timestamp>'$tagesanfang' AND timestamp<'$tagesende'");

?>

Matze 19. Sep 2008 20:35

Re: Website-Counter selbst programmieren
 
Zitat:

Zitat von Thomas F
Aber braucht man da PHP und Database ?

Nein, aber schau doch selbst ...

Thomas F 19. Sep 2008 20:39

Re: Website-Counter selbst programmieren
 
Zitat:

Zitat von Matze
Zitat:

Zitat von Thomas F
Aber braucht man da PHP und Database ?

Nein, aber schau doch selbst ...

Ich hab mich schon angemeldet, heute funktionierts aber noch nicht.

Hador 19. Sep 2008 20:58

Re: Counter
 
Zitat:

Zitat von dominikkv
Code:
[...]
  $abfrage = 'SELECT * FROM `MeineTabelle` ORDER by id DESC LIMIT 1';
  $ergebnis = mysql_query($abfrage);
  $row = mysql_fetch_object($ergebnis); // in row steht der letzte datensatz
      
  $count = $row->ID;
  $timestamp = $row->Time;
  $ip = $row->IP;
  mysql_free_result($ergebnis);    
 
  $datum = date("d.m.Y", $timestamp);
  $uhrzeit = date("H:i", $timestamp);
  echo "$count mal wurde diese Seite schon aufgerufen, zuletzt am $datum - $uhrzeit mit der IP $ip";
 
  $timestamp = time();
  $ip = $_SERVER['REMOTE_ADDR'];
  $abfrage = "INSERT INTO MeineTabelle (Time, IP) VALUES ('$timestamp', '$ip')";  
  mysql_query($abfrage);
?>
Es sollte allerdings schon ein Datensatz in der DB sein, oder anders ausgedrückt: beim ersten mal crasht der Code :zwinker:

Nicht nur das. Du verlässt dich auch dabei darauf, dass MySQL die id immer shön für dich hochzählt. Das wird zwar auch gemacht wenn die id mit auto_increment gekennzeichnet ist, jedoch wird die id auch nicht wieder zurückgesetzt, wenn du selbst mal Datensätze aus der Tabelle löscht. Sicherer wäre die Methode mit mysql_num_rows die Anzahl der Datensätze Abzufragen.

Zusätzlich interessant sind übrigends ggf. noch $_SERVER['HTTP_REFERER'] und $_SERVER['HTTP_USER_AGENT']

Florian H 20. Sep 2008 09:37

Re: Counter
 
Zitat:

Zitat von Hador
Sicherer wäre die Methode mit mysql_num_rows die Anzahl der Datensätze Abzufragen.

Dafür muss man aber erstmal -alle- Datensätze auslesen, nur um sie dann zu zählen?
Wenn man nur wissen will, wieviele Besucher da waren/Einträge in der DB sind, bietet sich ein "SELECT COUNT(*) AS besucher FROM tabelle" mehr an .. spart für MySQL das Ausgeben aller Einträge, wenn eh nur gezählt werden soll...

jokerfacehro 20. Sep 2008 11:50

Re: Website-Counter selbst programmieren
 
Zitat:

Dafür muss man aber erstmal -alle- Datensätze auslesen, nur um sie dann zu zählen?
Wenn man nur wissen will, wieviele Besucher da waren/Einträge in der DB sind, bietet sich ein "SELECT COUNT(*) AS besucher FROM tabelle" mehr an .. spart für MySQL das Ausgeben aller Einträge, wenn eh nur gezählt werden soll...
genau und ich glaub mein voriger eintrag hat für die anderen die eigenschaft
Delphi-Quellcode:
visible:=false;
:mrgreen:

Thomas F 20. Sep 2008 16:51

Re: Website-Counter selbst programmieren
 
Mal ne Frage

Wie kann man auf ne Datenbank im Internet zugreifen.

Bei ner Datenbank auf der Festplatte gibt man einfach den Dateipfad ein.

Wo gibt man die URL ein ? ?

jokerfacehro 20. Sep 2008 18:14

Re: Website-Counter selbst programmieren
 
mysql_connect.php

Delphi-Quellcode:
<?

$mysql_ip="localhost";
$mysql_login="root";
$mysql_passwort="";
$mysql_db="db_joe";

mysql_connect($mysql_ip,$mysql_login,$mysql_passwort);
mysql_select_db($mysql_db);

?>
so schaut se aus

aber du kannst dich auch ma bei google umschaun, gibt genug infos dazu

Thomas F 21. Sep 2008 16:11

Re: Website-Counter selbst programmieren
 
Zitat:

Zitat von jokerfacehro
mysql_connect.php

Delphi-Quellcode:
<?

$mysql_ip="localhost";
$mysql_login="root";
$mysql_passwort="";
$mysql_db="db_joe";

mysql_connect($mysql_ip,$mysql_login,$mysql_passwort);
mysql_select_db($mysql_db);

?>
so schaut se aus

aber du kannst dich auch ma bei google umschaun, gibt genug infos dazu

Aber wo gibt man die Internet-Adresse der Website, auf der die Database ist, ein ????

DeddyH 21. Sep 2008 16:13

Re: Website-Counter selbst programmieren
 
Was ist denn "localhost"?

Matze 21. Sep 2008 16:45

Re: Website-Counter selbst programmieren
 
@Thomas: Wenn das Skript und die Datenbank auf dem selben Server liegen, dann kannst du i.d.R. "localhost" dort stehen lassen.

Torpedo 21. Sep 2008 16:51

Re: Website-Counter selbst programmieren
 
Zitat:

Zitat von Thomas F
Aber wo gibt man die Internet-Adresse der Website, auf der die Database ist, ein ????

Hier wird MySQL verwendet, bei dem man keinen Pfad zu einer Datei angibt, sondern IP/Domain und Port eines MySQL-Servers.
Also z.B. localhost, wenn der Server auf dem selben Computer läuft, wie der Webserver.

DeddyH 21. Sep 2008 17:12

Re: Website-Counter selbst programmieren
 
Ich denke, mit Internet-Adresse meinte er die IP/Domain.

jokerfacehro 21. Sep 2008 19:13

Re: Website-Counter selbst programmieren
 
Zitat:

Aber wo gibt man die Internet-Adresse der Website, auf der die Database ist, ein ????
en bischen nachdenken is doch wohl drin oder und
Delphi-Quellcode:
$mysql_ip="http://www.domain.de";
erklärt sich doch von selbst oder ?

Torpedo 21. Sep 2008 19:23

Re: Website-Counter selbst programmieren
 
Zitat:

Zitat von jokerfacehro
Zitat:

Aber wo gibt man die Internet-Adresse der Website, auf der die Database ist, ein ????
en bischen nachdenken is doch wohl drin oder und
Delphi-Quellcode:
$mysql_ip="http://www.domain.de";
erklärt sich doch von selbst oder ?

Ich glaube nicht, dass das geht. ;)
Wenn dann ohne http://
Und normalerweise muss man nur localhost eingeben. Sollte es auf einem anderen Server sein, ist dieser meiste nicht über die normale Domain zu erreichen.

jokerfacehro 21. Sep 2008 19:49

Re: Website-Counter selbst programmieren
 
schon ausprobiert, ich ja ohne problemos und mit http://

Zitat:

ist dieser meistens nicht über die normale Domain zu erreichen.
das kann sein, bei guten providern, sind die domains für mysql zugriff aber ausgewiesen.
außerdem kann man das prob ganz leicht umgehen, indem man einfach seine daten an ein phpscript auf den server schickt der dann zugriff per localhost hat


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:52 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz