• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Ip Sperre für Counter

Status
Für weitere Antworten geschlossen.

RaZ0oR

Neues Mitglied
Ich hab mir mal ein counter geschrieben, er funktioniert auch ganz gut, leider bei jedem aufruf der startseite, wird erhöht er sich halt um 1!

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> Besucherzähler </title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Besucherzähler</title>
</head>
<body>
<?php
 $bol=file_exists("counter.txt");
 if($bol) {
  $datei=fopen("counter.txt","r");
   
 if($datei) {
  $dateigroesse=filesize("counter.txt");
  $counter=fread($datei,$dateigroesse);
  fclose($datei);
 }
  
  $counter++;
  print("<h4> Du bist der ");
  print($counter);
  print(". auf meiner Page </h4>");
  
 }
 $bol=file_exists("counter.txt");
 if($bol) { 
  $datei=fopen("counter.txt","w");
 if($datei) {
  $output=fwrite($datei,$counter);
  fclose($datei);
  }
 }
  ?>
</body>
</html>
Wie baue ich den da eine IP-Sperre für 5Stunden ein???
 
Also mit Textdateien duerfte das ziemlich kompliziert werden.


Kannst du MySQL verwenden?
 
Ja kann ich verwenden!
Dann versuch ich erst mal ein Counter mit MySQL zu schreiben, und dann melde ich mich noch mal ;)!

Und mit Textdatei gibt es echd garkeine möglichkeit?
 
Ja kann ich verwenden!
Dann versuch ich erst mal ein Counter mit MySQL zu schreiben, und dann melde ich mich noch mal ;)!

Und mit Textdatei gibt es echd garkeine möglichkeit?
Doch, allerdings ist das ziemlich kompliziert da du in eine Textdatei sowohl ein Timestamp als auch die IP schreiben musst, bei jedem Besucher pruefen musst ob er schonmal da war und bestimmte IP-Adressen wieder loeschen muesstest.

Ausserdem waere die IP jedes Benutzers oeffentlich sichtbar ;)



Das hier koennte dir helfen: #php/QuakeNet Tutorial - Eigenes User-Online Script
 
- eine datei sperre.txt

- in die Datei wird so ungefähr reingeschrieben:
ip-adresse / timestamp,ip-adresse / timestamp, [...]

- die Erhöhung des Counters in eine if-Abfrage, die abgleicht, ob die IP-Adresse des Users in der sperre.txt ist und ob der timestamp mehr als 5 Stunden alt ist (Stichwort: CSV)

- wenn der Counter um 1 erhöht wurde, die IP-Adresse und einen dazugehörigen timestamp in die sperre.txt
 
- eine datei sperre.txt

- in die Datei wird so ungefähr reingeschrieben:
ip-adresse / timestamp,ip-adresse / timestamp, [...]

- die Erhöhung des Counters in eine if-Abfrage, die abgleicht, ob die IP-Adresse des Users in der sperre.txt ist und ob der timestamp mehr als 5 Stunden alt ist (Stichwort: CSV)

- wenn der Counter um 1 erhöht wurde, die IP-Adresse und einen dazugehörigen timestamp in die sperre.txt
Ja^^, gut das kapier ich ja erst recht nich^^


Also ich habe jetzt mal so was mit MySQL probiert,
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Unbenanntes Dokument</title>
</head>
<body>
<?php
  $db=mysql_connect("localhost","root","")
   or die("<b>Keine Verbindung zur Datenbank </br>");
  mysql_select_db("counter")
   or die("<b>Datenbank konnte nicht gefunden werden </b>");
  $anfrage="SELECT count FROM counter";
  $ergebnis=mysql_query($anfrage)
   or die("<b>Fehler bei der Datenbankabfrage</br>");
  $zeile=mysql_fetch_row($ergebnis);
  $aktuell=$zeile[0]+1;
  $anfrage="UPDATE counter SET count=+1";
  $anfrage.=$aktuell;
  $anfrae.="'";
  mysql_query($anfrage)
   or die("<b>Fehler bei der Datenbankanfrage</b>");
  mysql_close($db);
  
  $laenge=strlen($aktuell);
  print("<h4>Du bist der ");
  print($aktuell);
  print(". auf meiner Page </h4>");
 ?>
</body>
</html>
Das problem hier ist, das mein Counter jetzt immer nur
Code:
[B]Du bist der 1. auf meiner Page [/B]
anzeigt, nie du bist der 2te, 3te, 4te!!!
 
PHP:
$anfrage="UPDATE counter SET count=count+1";
;)


Allerdings waere das anders viel sinnvoller.

Du speicherst in der Tabelle alle IP-Adressen ab und zaehlst, wie viele vorhanden sind (den Wert gibst du dann aus). Bei jedem Seitenaufruf werden ausserdem die geloescht, die aelter sind als 5 Stunden und bevor eine neue IP eingetragen wird, wird erst geprueft, ob diese bereits vorhanden ist.


btw: [phpnet]error_reporting[/phpnet]
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben