WinFuture-Forum.de: Php Problem [counter] - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Php Problem [counter]


#1 Mitglied ist offline   flo 

  • Gruppe: aktive Mitglieder
  • Beiträge: 7.955
  • Beigetreten: 14. November 04
  • Reputation: 1
  • Geschlecht:Männlich

geschrieben 29. Januar 2006 - 22:38

Hallo

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);
?>

0

Anzeige



#2 Mitglied ist offline   Stan 

  • Gruppe: aktive Mitglieder
  • Beiträge: 7.017
  • Beigetreten: 06. Juni 04
  • Reputation: 35
  • Geschlecht:Männlich
  • Wohnort:München

geschrieben 30. Januar 2006 - 01:03

Also ich nutze das hier und das geht eigentlich sehr gut:

<?php

$DateinameCount = "count.txt";
$DateinameIP	= "ip.txt";
$Zeitsperre	 = 86400; // Sekunden

#######################################

$Gefunden = FALSE;
$IPListe = file($DateinameIP);
if(count($IPListe)>0)
{
	foreach($IPListe as $Zeile)
	{
		$GesplitteteZeile = explode("|", $Zeile);
		if(($GesplitteteZeile[0]+$Zeitsperre)>time())
		{
			$NeueIPListe[] = trim($Zeile)."\n";
		}
	}
	if(count($NeueIPListe)>0)
	{
		foreach($NeueIPListe as $Zeile)
		{
			$GesplitteteZeile = explode("|", $Zeile);
			if(trim($GesplitteteZeile[1])==$_SERVER['REMOTE_ADDR'])
			{
				$Gefunden = TRUE;
			}
		}
	}
}

$FilePointerIP = fopen($DateinameIP, "w");
if(count($IPListe)>0 && count($NeueIPListe)>0)
{
	foreach($NeueIPListe as $Zeile)
	{
		fwrite($FilePointerIP, trim($Zeile)."\n");
	}
}
if(!$Gefunden)
{
	fwrite($FilePointerIP, time()."|".$_SERVER['REMOTE_ADDR']."\n");
}
fclose($FilePointerIP);

$FilePointerCount = fopen($DateinameCount, "r+");
$Counter = fread($FilePointerCount, filesize($DateinameCount)); 

if(!$Gefunden)
{
	$Counter++;
	rewind($FilePointerCount);
	fwrite($FilePointerCount, $Counter);
}
fclose($FilePointerCount);


echo$Counter;

?>

0

#3 Mitglied ist offline   axx 

  • Gruppe: aktive Mitglieder
  • Beiträge: 487
  • Beigetreten: 19. Mai 05
  • Reputation: 0

geschrieben 30. Januar 2006 - 01:15

Beitrag anzeigenZitat (Flo: 29.01.2006, 22:38)

Hallo

Ich habe hier einen counter, das komische ist er zählt immer um 3 anstatt um eins hoch , warum?


Das Problem muss woanders liegen, habe deinen Quelltext gerade getestet: zählt mit jedem reload um 1 hoch.
0

#4 Mitglied ist offline   mo 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.796
  • Beigetreten: 17. Juni 02
  • Reputation: 0
  • Wohnort:Ulm / BaWü

geschrieben 30. Januar 2006 - 09:45

omg, der arme webspace anbieter. wollt ihr nicht vielleicht ne datenbank für sowas verwenden?
I'm mó. mo's good twin.
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0