PHP MySQL Counter Problem

Johanni

Mitglied
Hallo!
ich habe hier auf tutorials.de ein turorial über ein PHP MySQL Counter mit IP-sperre gefunden und habe diesbezüglich ein problem.
es scheint, als würde etwas mit der zeit nicht stimmen.
sobald ich ein mal den counter "aktiviert" also um 1 hochgestzt habe, funktioniert er nicht mehr: der code ist folgender:
counter.php
PHP:
<?php
mysql_connect("test.org","uder", "pass); 
mysql_select_db("test"); 

$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 - 60; 
mysql_query("delete from ip where zeit < $del"); 

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

?>
<head>
</head>
<body>
</body>
</html>
die php habe ich per include in meine index.php eingebunden. und in meiner datenbank habe ich zwei tabellen, einmal hits mit dem feld hits und die andere tabelle ist ip mit den feler ip und zeit, integer und varchart.

hat jemand eine idee was ich falsch mache oder wieso ich nach dem ersten aktivieren keine weiteren hits bekomme?
ach und wenn ich in die datenbank schaue, dann ist im feld ip kein wert- ist doch auch nicht richtig oder?

hier der link zum original tut:
http://www.tutorials.de/forum/php-tutorials/10216-php-mysql-counter-mit-reloadsperre.html


danke gruss
johann
 
Wenn das dein Code, müsste da eine Fehlermeldung kommen. Denn in der ersten Zeile fehlen Anführungzeichen (").

Code:
mysql_connect("test.org","uder", "pass");
 
ok die " habe ich gerade in der eile ausversehen mit gelöscht, sind im script drin. daran liegt es nicht, funktioniert ja auch beim ersten mal.
trotzdem danke
 
Hallo!

Versuche es mal mit $_SERVER['REMOTE_ADDR'].

@Loomes, das fehlende Anführungszeichen dürfte wohl vom ersetzen des Passwortes kommen.
Der Benutzer heisst ja auch nicht "uder" (was wohl eher "user" werden sollte). ;)

Gruss Dr Dau
 
Hallo Dr Dau,
vielen Dank auch für Deine Hilfe,
wenn ich
$REMOTE_ADDR
durch
$_SERVER['REMOTE_ADDR']
ersetze,
bekomme ich folgende Fehlermeldung:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /is/htdocs/wp1058556_W6WOQCGFKR/www/shareneu/counter.php on line 5

kannst du damit etwas anfangen? oder hast du eine weitere Idee?

Vielen Dank
Gruss

P.S. Hattest natürlich recht mit deinem Kommentar @ Loomes
 
//edit: Ich sollte mal Feierabend machen für heute ;)

Dr Dau hat natürlich recht.
 
Zuletzt bearbeitet:
leider auch nicht. es kommt zwar keine fehlermeldung aber es passiert auch nichts.
habe das problem jetzt mal umgangen und es folgendes maßen gestaltet:
PHP:
<?php
mysql_connect("xxx","xxx", "xxx"); 
mysql_select_db("xxx"); 

$ip = $_SERVER['REMOTE_ADDR'];

$sql = mysql_query("select * from ip where ip = $ip"); 
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', '$ip' )"); 
} 
$del = $zeit-5; 
mysql_query("DELETE FROM ip WHERE zeit < $del"); 

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

?>

jetzt scheint die function an sich zu funktionieren aber noch nicht wie gewünscht. d.h. in meiner tabelle ip werden die zeiten plus ip nummer gespeichert und auch die einträge die älter sind als 5 sekunden gelöscht. jedoch bekomme ich folgende fehlermeldung:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /is/htdocs/wp1058556_W6WOQCGFKR/www/shareneu/counter.php on line 8

zudem wird jetzt auch jedes aufrufen der seite im counter gezählt, eigentlich soll meine ip ja für 5 sekunden gesperrt sein...
 
Warum löscht du den Eintrag denn wieder, kann doch stehenbleiben kannst dadurch auch Statistiken generieren und ne Chronik führen etc.
 
Zurück