Zu [ php // mysql ] counter mit reloadsperre tutorial

DieterWeb

Mitglied
Zu Counter-Tutorial .
da ist ein fehler drin, so kann das net funzen. die variable $zeit muss vor dem if schon definiert sein, sonst würde sie nur neu definiert wenn die auf die seite zugreifende ip in der db net vorhanden ist. wenn man aber nach x sekunden nochmal drauf zu greift mit der gleichen ip kann $zeit net neu definiert werden, weil es die ip schon in der db gibt, selbst wenn man nach dem eingestellten zeitraum in $del wieder auf die page kommt. ich hoffe ihr wisst was ich meine
 
ehrlich gesagt verstehe ich nur Bahnhof.. hehe .. keine Ahnung was Du jetzt von uns willst, ich hab das Script gerade probiert und es funktioniert 100 % .. wo also liegt jetzt dein problem? Das mit der $zeit variable vorher definieren ist quatsch, das Ergebnis ist und bleibt das gleiche.

:-)
 
irgendwie weiss ich auch nicht so ganz, was daran falsch sein soll. bei mir funktioniert's prima. und in welcher reihenfolge man die einzelnen schritte ausführt, dürfte an sich auch ziemlich egal sein.
ansonsten schreib dem autor halt einfach eine pm oder email. ;)
 
1.bei mir hat es net gefunzt
2.also was ich meine is folgendes:
mal in wörtern ausgedrückt(zahlen sind nur Bsp) und wir gehen vom allerersten hit aus und Reload-Sperre auf 100

-> Jemand kommt zum ersten mal auf die Seite
-> Script nimmt alle Rows die, die gleiche IP haben aus der DB
-> Script zählt die Ergebnisse
-> Da er das erstemal da ist, ist das Ergebnis = 0
-> Script setzt die Var $zeit auf 1000
-> Script updatet die Hits auf +1
-> Script trägt $zeit=1000 und $ip=1.1.1.1 ein
-> Script brauch nichts deleten etc da es der erste Hit war

So weiter gehts, jetzt kommt die gleiche IP nochmal

-> IP 1.1.1.1 kommt nach 101 sekunde wieder auf die page
-> Script nimmt alle Rows die, die gleiche IP haben aus der DB
-> Script zählt die Ergebnisse
-> Script findet Übereinstimmung also wird die If-Clause ausser Kraft gesetzt da 1 (ein Ergebnis des IF) nicht kleiner ist als 1
-> If Clause wird übersprungen da die Bedingung net erfüllt ist
-> UND VAR $zeit WIRD NET GESETZT DA SIE IN DER IF-CLAUSE HÄTTE DEFINIERT WERDEN SOLLEN
-> dann kommt die Berechnung: $del = $zeit - 101;
-> da kommt aber kein Ergebnis raus, da $zeit nicht definiert ist (oder $zeit gibt 0 das weiss ich net so genau)
-> dann kommt die 2. Berechnung
er soll da die IP rauslöschen wo (die gespeicherte zeit des letzten hits) - (jetzige Zeit - Reload-Sperre)
-> das geht aber net da $zeit immernoch net definiert ist
ERGO=

Die IP wird nie gelöscht da $zeit ab dem zweiten Hit der gleichen IP nie wieder definiert wird!!

so ich hoffe ich hab mich jetzt deutlicher ausgedrückt. ich will hier keinem ans bein pissen oder so. mir is das nur aufgefallen und es is ja vielleicht auch nur nen denkfehler von mir. bei mir war es nur so, und nachdem ich $zeit vor der IF-Clause definiert hab, funzte alles wunderbar
 
delete wird aber selbstaendig ausgefuehrt.. das hat nichts mit der if schleife zu tun.. d.h wenn delete an hand des zuvor eingefuegten unixtimestamps erkennt das er ueber der Zeit ist, wird die row automatisch geloescht.. egal ob es die gleiche ip ist oder nicht..

die if schleife schaut lediglich nach ob ein datensatz mit der ip vorhanden ist und wenn nicht wird er neu hinzugefuegt... aber delete arbeitet selbstaendig.

oder hab ich es immer noch nicht kapiert? ..:-)

-> da kommt aber kein Ergebnis raus, da $zeit nicht definiert ist (oder $zeit gibt 0 das weiss ich net so genau)

nein ist nicht == 0 ... die -101 werde lediglich vom "aktuellen" unixtimestamp abgezogen und mit dem alten verglichen.
 
Zuletzt bearbeitet:
aber der unix timestamp wird nur eingefügt wenn die if schleife true gibt. nur dann wird in $zeit = time(); also heisst das doch das der timestamp nicht gesetzt wird wenn die if schleife false zurück gibt, was ja der fall ist wenn jemand mit der gleichen ip wieder auf die seite kommt.
 
ah, jetzt hab ich es kapiert.. jo das ist richtig.. ich habs gerade nochmal getestet ($del auf -120 gestellt) und wenn ich mit der gleichen ip auf die seite gehe wird der eintrag nicht geloescht.. d.h $time muss vor der if abfrage stehen, dann funktioniert es auch..

am besten Du kontaktierst mal den Tut-Author und machst Ihn darauf aufmerksam.. :-)

sorry hat etwas gedauert.. aber nun ist der groschen gefallen.. hehe
 
Zurück