Problem mit Reloadsperre bei Counter

Phjun

Grünschnabel
Es geht um ein Tutorial zu diesem Thema von |[ Kab00m ]| :
http://www.tutorials.de/tutorials10216.html

So ich hab das Problem, das die IPs in der Tabelle nicht nach dem entsprechenden Zeitraum gelöscht werden, warum nicht?
Also ich habe als Zeitraum einfachmal 60 Sekunden gewählt, zum testen. Allerdings wenn ich mit dem selben PC (und natürlich gleicher IP) nach einer Minute darauf zugreife, bleibt der Wert trotzdem gleich, und die IP auch immer noch gespeichert. (Auch wenn ich länger warte, egal wie lang) Wenn ich jedoch in der Zwischenzeit mit einem anderen PC darauf zugreife, wird die IP vom ersten PC gelöscht und stattdessen wird die IP des zweiten PCs gespeichert, dass aber auch nur wenn die Zeit des ersten PCs abgelaufen war. Wenn die IPs beider PCs innerhalb der Zeitspanne gespeichert werden, komm ich mit den IPs nicht mehr aus dem Speicher raus, solange kein neuer PC hinzukommt.

Kann mir da jemand helfen? Ich hoffe ich habe das einigermaßen verständlich geschrieben !!
 
Delete Anweisung an falscher Stelle ?

Ich würde mal tippen, du hast die delete Anweisung in die if-Abfrage gepackt, welche nur zutrifft, wenn der zugreifende PC nicht in der Tabelle steht. Die Anweisung zum löschen muss natürlich völlig unabhängig vom zugreifenden PC und nur abhängig von der verstrichenen Zeit geschehen. Check deinen Code mal diesbezüglich.
 
Zuletzt bearbeitet:
äh,.. gute frage:

PHP:
<?php
mysql_connect("localhost","root","pw");
mysql_select_db("db_counter");

$sql = mysql_query("select * from ip where ip='$REMOTE_ADDR'");
if(mysql_num_rows($sql) < 1) {
    $zeit = time();
    mysql_query("update hits set hits=hits+1");
    mysql_query("insert into ip (zeit, ip) values ('$zeit', '$REMOTE_ADDR')");
}

$del = $zeit - 120;
mysql_query("delete from ip where zeit < $del");

$sql = mysql_query("select * from hits");
$row = mysql_fetch_array($sql);
echo $row["hits"];
?>

so stand es in dem tutorial von Kab00m drin !?!
 
Ja da hamm wir das Problem doch schon. Die Variable $zeit ist nur gesetzt, wenn die jeweilige IP in der Tabelle steht, da $zeit = time() in der if-Abfrage steht. Du musst einfach die Zeile
PHP:
$del = $zeit - 120;
durch
PHP:
$del = time() - 120;
ersetzen und alles dürfte einwandfrei funktionieren.
 
Zurück