Zur Navigation

max 5 Zugriffe

1 uwe

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

08.01.2009 19:56

2 Jörg Kruse

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

3 Uwe (Gast)

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

09.01.2009 09:13

4 Jörg Kruse

Welches Ziel meinst du? Eine Abfrage alleine bewirkt ja noch nichts?

Die IP-Adresse des Clients ist in dieser Variablen gespeichert:

$_SERVER['REMOTE_ADDR']

09.01.2009 17:01

5 Uwe (Gast)

Hallo,
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

6 Jörg Kruse

Wenn du die Daten unbedingt in einer einzelnen Textadatei unterbringen möchtest, würde ich diese in einem mehrdimensionalen Array speichern:

$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

7 uwe (Gast)

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.

<?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)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]