Ich habe hier einen counter, das komische ist er zählt immer um 3 anstatt um eins hoch , warum?
<?
// 0 =keine Reloadsperre 1=Reloadsperre
$aktiv = 0;
//Zeit der Realodsperre in Minuten
$zeit = 1;
//Ip-Adressen speicherdatei
$ipdatei = "ip.txt";
//Counter
$counter = "counter.txt";
// Anzahl der führenden nullen
$stellen = 5;
//Reloadsperre
function pruf_IP ($rem_addr) {
global $ipdatei,$zeit;
@$ip_array = file($ipdatei);
$reload_dat = fopen($ipdatei,"w");
$this_time = time();
for ($i=0; $i<count($ip_array); $i++){
list($ip_addr,$time_stamp) = explode("|",$ip_array[$i]);
if ($this_time < ($time_stamp+60*$zeit)){
if ($ip_addr == $rem_addr){ $gefunden=1;}
else {fwrite($reload_dat,"$ip_addr|$time_stamp");
}
}
}
fwrite($reload_dat,"$rem_addr|$this_time\n");
fclose($reload_dat);
return ($gefunden==1) ? 1 : 0;
}
//counter
if (file_exists($counter) && ($aktiv==0 || ($aktiv==1 && pruf_IP($REMOTE_ADDR)==0)))
{
$fp=fopen($counter,"r+");
$zahl=fgets($fp,$stellen);
$zahl++;
rewind($fp);
flock($fp,2);
fputs($fp,$zahl,$stellen);
flock($fp,3);
fclose($fp);
}
else if (!file_exists($counter) && ($aktiv==0 || ($aktiv==1 && pruf_IP($REMOTE_ADDR)==0)))
{
$fp=fopen($counter,"w");
$zahl="1";
fputs($fp,$zahl,$stellen);
fclose($fp);
}
else{
$fp=fopen($counter,"r");
$zahl=fgets($fp,$stellen);
fclose($fp);
}
$zahl=sprintf("%0".$stellen."d",$zahl);
?>

Hilfe
Neues Thema
Antworten


Nach oben


