Problem mit IP-Reloadsperre bei Statistikscript

Mew

Erfahrenes Mitglied
Hi Leute!

Ich bin mal wieder am Verzweifeln. Ich habe ein Script geschrieben, dass eine kleine Statistik der Besucher erstellt:

PHP:
  $Suchen = mysql_fetch_object(mysql_query("SELECT * FROM statistik WHERE IPAdresse = '$IP'")); 
      
  @$IPAdresse = $Suchen->IPAdresse;
     
  @$Reloadsperre = $Suchen->Uhrzeit - 1800; # 30min. Reloadsperre!

      
  if($IPAdresse == $IP AND $Suchen->Uhrzeit+$Reloadsperre >= $Uhrzeit){ 
     
      
   $Suchen->Seitenaufrufe;
   $Seitenaufrufe = $Suchen->Seitenaufrufe+1; 
      
  $Befehl = "UPDATE statistik SET Seitenaufrufe = '$Seitenaufrufe' WHERE IPAdresse = '$IP'";
  $MySQLmachen = mysql_query($Befehl);  

  }
  
  else
  
  {
      
  $MySQLBefehl2 = "INSERT INTO statistik (IPAdresse, Herkunft, Referrer, Browser, Uhrzeit) VALUES ('$IP', '$country_name','$Referrer','$Browser','$Uhrzeit')";
  $MySQLmachen2 = mysql_query($MySQLBefehl2);
  
  }
Ich möchte eine Reloadsperre von 30min. haben, also wenn Jemand vor 30min. auf der Seite war und 5min. später wieder auf die Seite kommt, soll nur der Seitenaufruf hochgestellt werden, wenn er nach 40min. wieder raufkommt soll dann ein neuer Eintrag entstehen... Leider klappt das ganze nicht ganz.
Weiß jemand warum? Ist sonst noch ein Fehler im Script

Danke euch viele Grüße
 
Wo befüllst du $IP? Welchen Datentyp hat die Spalte "Uhrzeit"? Kannst du dort einfach so 1800 abziehen? Was klappt denn eigentlich "nicht ganz"?
 
$IP wurde vorher ermittelt:

PHP:
$IP = $_SERVER["REMOTE_ADDR"]; #IP Adresse wird ermittelt.

Die Spalte Uhrzeit ist int, weil ich den timestamp einlese.....

Naja die Reloadsperre von 30min klappt nicht... wird immer höher gezählt, auch nach 40min :(

Danke für deine Unterstützung
 
Ich versteh auch nicht was du da eigentlich rumrechnest. Du brauchst doch in Pseudocode nur sowas wie:
Code:
if(Damals + 30 Minuten >Jetzt)
{
    //Zeit abgelaufen
}

Das geht auch sehr fein in MySQL.
SQL:
SELECT IF(DATE_ADD(NOW(), INTERVAL 30 MINUTE) > NOW,1,0) AS ist_abgelaufen FROM tabelle;
 
Hmm habe es so gemacht:

PHP:
  $Suchen = mysql_fetch_object(mysql_query("SELECT * FROM statistik WHERE IPAdresse = '$IP'")); 
	  
  @$IPAdresse = $Suchen->IPAdresse;
	 
	 	  
  if($IPAdresse == $IP AND $Suchen->Uhrzeit+1800 > $Uhrzeit){ 
	 
   
  $Seitenaufrufe = $Suchen->Seitenaufrufe+1; 
	  
  $Befehl = "UPDATE statistik SET Seitenaufrufe = '$Seitenaufrufe' WHERE IPAdresse = '$IP'";
  $MySQLmachen = mysql_query($Befehl); 
	  
  }
  
  else
  
  {
	  
  $MySQLBefehl2 = "INSERT INTO statistik (IPAdresse, Herkunft, Referrer, Browser, Uhrzeit) VALUES ('$IP', '$country_name','$Referrer','$Browser','$Uhrzeit')";
  $MySQLmachen2 = mysql_query($MySQLBefehl2);
	  

  
  }

komischer weiße ist nun ein anderes problem da... er zählt mich so hoch, also die Seitenaufrufe: 34,41,45.50 ... woran kann das liegen?
 
item: im if musst du "$IPAdresse == $IP" nicht mehr abfragen. Das ist mit dem SQL schon geregelt.
item: du übergibst im Update das Feld Seitenaufrufe als String ( '$Seitenaufrufe'). Du solltest dises Feld als Nummer definieren und auch als Nummer übergeben (also ohne ' ')
item: in welchem Format ist Uhrzeit? auch das sollte kein String sein.
 
Zurück