max 5 Zugriffe
Hallo,
ich habe auf meiner Seite eine Button, wo der Besucher
eine Berechnung durchführen kann. Da u.a. Suchmaschinen
hier viel Traffic verursachen, will ein einen Text-Counter einsetzen.
Diese soll bei jedem Klicken die IP Adresse speichern und die Anzahl erhöhen.
Ich brauche keinne ellenlange Liste der IP Adressen, nur die Anzahl der "Klicks" von der jetzigen IP Adresse.
Gruss
Uwe
ich habe auf meiner Seite eine Button, wo der Besucher
eine Berechnung durchführen kann. Da u.a. Suchmaschinen
hier viel Traffic verursachen, will ein einen Text-Counter einsetzen.
Diese soll bei jedem Klicken die IP Adresse speichern und die Anzahl erhöhen.
Ich brauche keinne ellenlange Liste der IP Adressen, nur die Anzahl der "Klicks" von der jetzigen IP Adresse.
Gruss
Uwe
08.01.2009 19:56
Da u.a. Suchmaschinen
hier viel Traffic verursachen, will ein einen Text-Counter einsetzen.
Suchmaschinenbots kommen oft unter verschiedenen IP-Adressen. Auf der anderen Seite teilen sich menschliche Besucher oft IP-Adressen (z.B. AOL-User)
Möchtest du nach 5 Zugriffen die IP-Adresse dauerhaft blocken?
Zur Umsetzung:
Du könntest pro IP-Adresse ein Textfile anlegen, welches als Namen die IP-Adresse erhält, und darin dann die Zugriffe hochzählen. Mit einem Cronjob könntest du die Files in regelmäßiigen Abständen löschen.
08.01.2009 23:42 | geändert: 08.01.2009 23:46
Hallo,
danke für die Zwischenfrage.
Ich denke wenn man erst man nur die jetzige IP Adresse abfragt,
ist schon das Ziel errreicht.
Gruss
Uwe
danke für die Zwischenfrage.
Ich denke wenn man erst man nur die jetzige IP Adresse abfragt,
ist schon das Ziel errreicht.
Gruss
Uwe
09.01.2009 09:13
Welches Ziel meinst du? Eine Abfrage alleine bewirkt ja noch nichts?
Die IP-Adresse des Clients ist in dieser Variablen gespeichert:
Die IP-Adresse des Clients ist in dieser Variablen gespeichert:
$_SERVER['REMOTE_ADDR']
09.01.2009 17:01
Hallo,
so hatte ich den Anfang gedacht:
zum prüfen dann
dann
die Adresse prüfen und ggf. neuen Zähler schreiben.
Bei Zähler 5 von der jetzigen Adresse
zum Test "echo "Sie haben die Seite 5 mal aufgerufen";
Gruss
Uwe
so hatte ich den Anfang gedacht:
<?
$daten.=$REMOTE_ADDR;
$daten.="|";
$daten.=$anzahl;
$daten.="\n";
$datei = fopen("logfile.txt","a");
$output = fwrite($datei,$daten);
fclose($datei);
?>
zum prüfen dann
<?php
$datei = "logfile.txt"; // Name der Datei
$array = file($datei); // Datei in ein Array einlesen
$array[$i] = explode(";" , $array[$i]);
....
?>
dann
die Adresse prüfen und ggf. neuen Zähler schreiben.
Bei Zähler 5 von der jetzigen Adresse
zum Test "echo "Sie haben die Seite 5 mal aufgerufen";
Gruss
Uwe
09.01.2009 19:45
Wenn du die Daten unbedingt in einer einzelnen Textadatei unterbringen möchtest, würde ich diese in einem mehrdimensionalen Array speichern:
Den Array selbst würde ich vor dem Schreiben in die Textdatei mit serialize() behandeln und nach dem Auslesen entsprechend mit unserialize.
So kannst du dann ganz einfach addieren:
... und so abfragen, ob 5 Zugriffe erfolgten:
$counter['123.45.67.89'] = 3;
$counter['234.56.78.91'] = 2;
/* und so weiter */
Den Array selbst würde ich vor dem Schreiben in die Textdatei mit serialize() behandeln und nach dem Auslesen entsprechend mit unserialize.
So kannst du dann ganz einfach addieren:
$ip = $_SERVER['REMOTE_ADDR'];
if isset($counter[$ip]) {
$counter[$ip] += 1;
} else {
$counter[$ip] = 1;
}
... und so abfragen, ob 5 Zugriffe erfolgten:
if ($counter[$ip] == 5) {
echo "Sie haben die Seite 5 mal aufgerufen";
}
10.01.2009 17:56
Hallo,
danke für den Ansatz.
Ich habe es (für mich einfacher) gelöst:
Bei jedem öffnen der php Datei setze ich den Counter auf 0,
der dann bei jedem klicken hochgezählt wird.
Nach 5 mal klick, wird dann die Startseite aufgerufen.
danke für den Ansatz.
Ich habe es (für mich einfacher) gelöst:
Bei jedem öffnen der php Datei setze ich den Counter auf 0,
der dann bei jedem klicken hochgezählt wird.
Nach 5 mal klick, wird dann die Startseite aufgerufen.
<?php
*/
$counter_file = "counter.txt";
*/
function counter($counter_file) {
$aprif = fopen($counter_file,"r+");
$hits = fgets($aprif, 16);
$hits += 1;
rewind($aprif);
fputs($aprif,$hits);
fputs($aprif,"\n");
fclose($aprif);
/* ------------------------------------------------------------------------------------- */
$hit_check = bcdiv($hits, 5, 5);
/* ------------------------------------------------------------------------------------- */
if (ereg("[0-9]+\.[0]+$", $hit_check)) {
//echo "Anzahl ".$hits;
/* 0 schreiben */
$fp = fopen($counter_file, 'w+');
fputs($fp,"0\n"); // 0 schreiben.
fclose($fp); // Datei wird geschlossen
header("Location:http://www.xxx.de");
}
}
counter($counter_file);
?>
11.01.2009 22:56
Beitrag schreiben (als Gast)
Beim Verfassen des Beitrages bitte die Forenregeln beachten.
