crash: IP Sperre bei Counter

Hallo!

Ich habe mir heute einen Counter in PHP programmiert,
und möchte jetzt eine IP Sperre einbauen,
so das das Weiterzählen durch alleine einen User verhindert wird.
Ich will eigentlich möglichst keine Cookies verwenden,
da einige User diese ja ausgeschaltet haben.
Meine Counter datei sieht bis jetzt so aus(ich binde sie per include() ein):

<?PHP
if (file_exists("wert.inc"))
{
$datei=fopen("wert.inc","r");
$zaehler=fgets($datei,255);
fclose($datei);
}
$zaehler++;
$datei=fopen("wert.inc","w");
fputs($datei,"$zaehler");
fclose($datei);
return $zaehler;
?>

Ich weis jetzt nur nicht wie ich eine IP Sperre einbauen soll.
Könnt ihr mir irgendwie helfen?
Auf jeden Fall will ich keinen Counterdienst oder einen vorgefertigten Counter verwenden.
Tschüs
Julius Hacker

  1. Servus

    Denken wir doch mal logisch
    Du willst eine IP sperren und nicht nur den Browser eines Users.
    Also setzen wir keinen Cookie sondern speichern die IP Adresse des Users in der DB oder auch in der Datafile (nicht so gut)
    und dann sucht man halt bevor der counter 1 rauszaehlt ob es die IP schon gibt.
    wenn ja, einfach ned raufzaehlen.

    Und jede IP mit einen timestamp versehen und bei jedem mal wo der counter aufgerufen wird gleich nach IP's suchen die aelter als 24 Stunden sind und die dann rausloeschen,
    dann gehen sie wieder.

    Somit kannst die den Cronjob auch sparen.

    Viele grüsse
    Aquariophile

  2. Hallo

    Kein Code aber ne idee :)

    1. Lese die IP des Besuchers aus und speichere sie zusammen mit der Zeit des aufrufens in einer datei.
    2. wird dein script aufgerufen, so überprüfe ob die ip schon in der datei steht
      -> falls nein: ip + zeit hinzufügen, counter erhöhen
      -> falls ja: zeitdifferenz zwischen "jetzt" und der stehenden zeit errechnen und falls diese einen bestimmten wert überschreitet weiterzählen+neue zeit schreiben, sonst nichts machen.
    3. countestand ausgeben

    so, nun viel spass beim proggn :))

    Grüße

    David

    --

    "Nobody will ever need more than 640k RAM!"
    1981 Bill Gates
  3. Hallo Julius,

    sicher hast Du dich schon mit der Thematik der dynamischen IP-Vergabe auseinandergesetzt und wißt deshalb, dass es sowohl Provider gibt, die (fast) jeden HTTP-Request eines Dial-in-Users über eine andere IP abwickeln, dass es auch Provider gibt, die viele Dial-in-Verbindungen netzseitig zusammenfassen und über eine IP weiterleiten (so wie ein Proxy das tut) und dass ein User bei den übrigen Providern wahrscheinlich auch jedesmal eine andere IP bekommt. Die Wahrscheinlichkeit, dass ein zweiter Besucher kurz nach dem Besuch des ersten mit der selben IP zu dir kommt, besteht auch noch, wenn auch nur sehr gering.

    Gut, nun zum Thema:

    Es wird Dir wahrscheinlich nichts anderes übrig bleiben, als eine Datei oder eine Tabelle einer Datenbank zu bemühen. Du solltest jetzt als erstes festlegen, wie lange denn die IP gegen Wiederbenutzung "gesperrt" bleiben soll. Das entscheidet wesentlich über das zu wählende Verfahren. Außerdem solltest Du uns einen Hinweis geben, wieviele Logbucheinträge Du denn am Tag so ungefähr hast. Das beeinflusst ja wensentlich das Dateiwachstum bzw. die nötigen Aufräum-Funktionen für die Logdatei.

    Bis dann

    Tom