Counter mit IP-Sperre will nicht funktionieren!

Vertigo21

Erfahrenes Mitglied
Ich habe ein Problem mit meinem Counter. Es wird weder ein Datenbankeintrag erstellt, noch die Textdatei und ich habe keine Ahnung wieso. An Zugriffsberechtigungen liegt es aber definitiv nicht. Meines Erachtens müsste der Code ok sein. Ich finde den Fehler einfach nicht! :mad:

PHP:
//******Beginn des Counters******
    $mysql_user = 'root';
     $mysql_pw   = '';
     $mysql_host = 'localhost';
     $mysql_db   = 'counter_db';  
   mysql_connect($mysql_host, $mysql_user, $mysql_pw);mysql_select_db($mysql_db);
 

$ipaddress= getenv("REMOTE_ADDR");
$stamp= time();
$sql= mysql_query ("SELECT ('ipaddress','ablaufzeit') FROM tbl_counter");

while( $counter_array = mysql_fetch_array($sql, MYSQL_ASSOC)) {
  if ($counter_array['ipaddress']==$ipaddress) {
    if ($stamp > $counter_array['ablaufzeit']) {
      mysql_query ("DELETE * FROM tbl_counter WHERE ('tbl_counter.ipaddress')=$ipaddress");
      set_counter($ipaddress,$stamp);
    }
    }
    else {set_counter($ipaddress,$stamp);}
}

//***FUNKTION***
function set_counter ($x,$y) {
      
    $ablaufzeit= $y+300;
  mysql_query ("INSERT INTO tbl_counter VALUE ('','$x','$ablaufzeit')");
  $datei= fopen ("counter.txt","a+");
  $zahl= fgets ($datei,5);
  $zahl++;
  rewind ($datei);
  flock ($datei,2);
  fputs ($datei,$zahl,5);
  flock ($datei,3);
  fclose($datei);
}
//****************

mysql_close();
 
Dein SQL-Statement sieht etwas merkwuerdig aus find ich.
PHP:
$sql= mysql_query ("SELECT ('ipaddress','ablaufzeit') FROM tbl_counter");
Probier das mal so:
PHP:
$sql= mysql_query ("SELECT ipaddress,ablaufzeit FROM tbl_counter");
 
Getestet: Daran lag es leider nicht. Das Interessante ist aber auch, dass es keinerlei Fehlermeldungen gibt. Die Datei und der DB-Eintrag werden einfach nicht erstellt... :confused:
 
Hallo,

in der query sind ein paar Fehler!

Teste bitte doch einmal wie folgt:
PHP:
<?php
     
     //***FUNKTION***
     function set_counter ($x,$y) {
      
     $ablaufzeit= $y+300;
     mysql_query ("INSERT INTO tbl_counter VALUE ('','$x','$ablaufzeit')");
     $datei= fopen ("counter.txt","a+");
     $zahl= fgets ($datei,5);
     $zahl++;
     rewind ($datei);
     flock ($datei,2);
     fputs ($datei,$zahl,5);
     flock ($datei,3);
     fclose($datei);
     var_dump($datei);
     }
     include ('conn.inc.php'); 
    
     mysql_select_db('Deine_Datenbank',$link)OR DIE(mysql_error());
     $ipaddress= getenv("REMOTE_ADDR");
     
     $stamp= time();
     $sql= mysql_query ("SELECT ID,ipaddress,ablaufzeit FROM tbl_counter");

     while( $counter_array = mysql_fetch_array($sql, MYSQL_ASSOC)) {
          if ($counter_array['ipaddress']==$ipaddress) {
            if ($stamp > $counter_array['ablaufzeit']) {
      mysql_query ("DELETE FROM tbl_counter WHERE ipaddress='".$counter_array['ipaddress']."'")OR DIE(mysql_error());
      set_counter($ipaddress,$stamp);
     }
     }
     else {set_counter($ipaddress,$stamp);}
}
     

?>
Gruß

RS9999:)
 
JETZT bin ich total verwirrt:

Es gibt immer noch keine Reaktion, auch nicht auf das var_dump, was ja eigentlich der Fall sein müsste! Es sei denn, diese Funktion gibt seit neuestem nicht mehr die Informationen zu einer Variablen aus...

Als Variation zu deinem Vorschlag habe ich noch Folgendes probiert (mit gleichem NULL-Effekt):
PHP:
$sql= mysql_query ("SELECT * FROM tbl_counter");
Aber was meintest du damit?
PHP:
include ('conn.inc.php');
Eine solche Datei gibt es bei mir nicht. Schreibfehler?
 
Hallo,

ok, neuer Versuch.
sollte in Deiner Textdatei noch nichts stehen,
setzte einfach einmal eine "1" an den Anfang.
Bitte dann den nachfolgenden Code kopieren
und anschließend mit Apache testen.
So ganz kann ich den Code nicht verstehen,
aber Du kannst mir jedoch berichten, was
denn so alles da passieren soll.

Achtung, habe den Timestamp auf "60" reduziert,
nur zum testen!

Das bedeutet, das ich meine Anmeldedaten nicht direkt in das Script
schreibe sondern diese in eine seperate Datei auslagere. Thema "Sicherheit"!
PHP:
include ('conn.inc.php');
Hier den CODE zum kopieren:
PHP:
<?php
   
     //***FUNKTION***
     function set_counter ($x,$y) {
     $ablaufzeit= $y+60;
     mysql_query ("INSERT INTO tbl_counter VALUE ('','$x','$ablaufzeit')");
     $datei = "counter.txt";
     $fp = fopen($datei,"r");
     $zahl = fgets($fp,5);
     fclose($fp);
     $zahl++;
     $fp = fopen($datei,"w");
     rewind($fp);
     flock($fp,2);
     fputs($fp,$zahl,5);
     flock($fp,3);
     fclose($fp);
     }
     //****************
     $mysql_user = 'root';
     $mysql_pw   = '';
     $mysql_host = 'localhost';
     $mysql_db   = 'counter_db';  
     mysql_connect($mysql_host, $mysql_user, $mysql_pw);mysql_select_db($mysql_db)OR DIE(mysql_error());
     $ipaddress= getenv("REMOTE_ADDR");
     
     $stamp= time();
     $sql= mysql_query ("SELECT * FROM tbl_counter");

     while( $counter_array = mysql_fetch_array($sql, MYSQL_ASSOC)) {
          if ($counter_array['ipaddress']==$ipaddress) {
            if ($stamp > $counter_array['ablaufzeit']) {
     mysql_query ("DELETE FROM tbl_counter WHERE ipaddress='".$ipaddress."'")OR DIE(mysql_error());
          set_counter($ipaddress,$stamp);
       }
     }
     else {
          set_counter($ipaddress,$stamp);
      }
     }

?>
Gruß RS9999
 
Zurück