Counter mit PHP

stefwil

Grünschnabel
Hab hier ein Counter mit PHP gebastelt... funktioniert soweit...
nur die Reloadsperre geht nicht, also zumindest bei mir nicht, warum?
guckt ihr ma auf *piep* da is er links unten eingebaut!

PHP:
<?php
$file ='ip.txt';
$output ='besucher';
$sperre ='0'; 

$counter=@fopen($file,"r");
if ($counter){
$line=fgets($counter,20);
$tmpArray=explode("|",$line);
$a=$tmpArray[0];
$ip=$tmpArray[1]; fclose($counter);}
else $a=0;
if ($ip!=$REMOTE_ADDR||!$sperre) $a++;
printf('%s',str_replace('besucher',$a,$output));

$tmpArray[0]=$a;
$tmpArray[1]=$REMOTE_ADDR;
$line=implode("|",$tmpArray);
$counter=fopen($file,"w");
fputs($counter,$line);
fclose ($counter);
?>
 
@Gumbo: Einen solchen Beitrag halte ich nicht für sonderlich hilfreich.

@stefwil: Es wäre besser, wenn du code-Tags benutzen würdest! Erkläre mal, was du dir bei deinem Code gedacht hast. Es ist nämlich eine ziemliche Arbeit, sich da durchzuwühlen!

Gawayn
 
Also wenn ich das richtig sehe liest du maximal die erste Zeile der Counterdatei ein. Weil schleife sehe ich hier weit und breit keine.
Dein Else steht auch etwas blöd da, denn !$counter kann auhc der Grund sein wenn du z.b. aus mangelnden Rechten die Datei nicht öffnen kannst, nur so als Info.

Voom Prinzip würde ich in dem Counter zwei Dateien verwenden. Eine in dem die Counterzahl drinsteht und eine zweite mit IP-Listen.
Letztere öffnest du zuerst und läuftst sie bis zu ende durch. Dort steht IP und timestamp (time()) drin. Diese beiden Werte liest du in ein Array ein.
Dannach fragst du mit in_array() ab, ob die IP im Array ist. Wenn nein -> Beushcer zählen. Wenn ja und timestamp - aktueller timestamp eine Bestimmte Zeit, z.B. 30Minuten überchreitet, kann man ihn ja durhcaus als neuen Benutzer zählen.

Achso und folgendes kannst du verkürzen (ohne ein Array zu missbrauchen ;) )
PHP:
$tmpArray[0]=$a;
$tmpArray[1]=$REMOTE_ADDR;
$line=implode("|",$tmpArray);

//wird zu
$line = $a.'|'.$REMOTE_ADDR.'\n'; //-> 2 Zeilen,1 Array und einen Funktionsaufruf gespart.
 
Die "oder"-Bedingung in der if Anweisung war der Fehler.:

PHP:
<?php
$file ='ip.txt';
$output ='besucher';

$counter=@fopen($file,"r");
if ($counter){
$line=fgets($counter,20);
$tmpArray=explode("|",$line);
$a=$tmpArray[0];
$ip=$tmpArray[1]; fclose($counter);}
else $a=0;
if ($ip!=$_SERVER["REMOTE_ADDR"]) {$a++;}
printf('%s',str_replace('besucher',$a,$output));

$tmpArray[0]=$a;
$tmpArray[1]=$_SERVER["REMOTE_ADDR"];
$line=implode("|",$tmpArray);
$counter=fopen($file,"w");
fwrite($counter,"$line");
fclose ($counter);
?>

Gruß, Stefan
 
Ich hab auch mal dieses Skript bei mir eingefügt und möchte nun gerne wissen, ob man die Zeit der Remote-Sperre einstellen kann?

Ist es die "20" in folgender Zeile?

PHP:
$line=fgets($counter,20);


MfG

Marco
 
@SilentWarrior: Erstmal danke. Ich wusste garnicht, dass Php so ein "Nachschlagwerk" besitzt.

@all: Gibt es denn eine (möglichst simple) Methode eine Zeitsperre anstatt der Permanenten einzufügen? Wennja, kann mir jemand das erklären, oder ein gutes, auch für Einsteiger freundliches geben?

Ich weiß, sowas wird sicherlich häufig gefragt und ich finds ja selbst dumm, immer andere Leute zu fragen. Aber ich habe nichts gefunden, dass mir das als total Einsteiger erklärt. (Ich weiß nur wie man PHP in Html ganz normal oder per "Include"-Funktion einbaut. ^^)


MfG

Marco

PS: Danke schonmal im Vorraus.
 
Zurück