Zitat Zitat
Original geschrieben von DragonThorm
Schöner Thread!!! Seh ich jetzt erst!
Also mein Prob:
Ich hab wohl das billigste PHP-Counter Script was möglich ist gemacht:
PHP-Code:
... 
Jetzt will ich eine Reload - Sperre (geht das überhaupt mit php) und eine User - SPerre (also , dass ein user nur einmal am tag gezählt wird)
Das mit der User - Sperre muss ich wohl mit Cookies regeln. (Mit Cookies kenn ich mich blos noch nicht aus. )
Dies hier ist ein Script das IP's nach dem Zählen für 600 Sekunden blockt (dürfte nicht zu schwer sein es auf 24 Std. einzustellen), die IP's schreibts in eine Textdatei auf dem Server (also ohne Cookies):
PHP-Code:
<?php
$counter 
"counter.txt";
$zeitfenster 600;
$zeit=time($zeit);
$update="1";

$fp fopen("counter.txt","r");
$i=0;
while (
feof($fp)==0) {
$line=chop(fgets($fp,260));
$i++;
$testarray[$i]=$line;
 }

fclose($fp);
$diff $zeit-$testarray[3];
if ((
$diff) >= $zeitfenster) { $update="0"; }
if (
$testarray[2] != $REMOTE_ADDR or $update == "0") {
$ftp = @fopen($counter,"r+");
$count = (int)fgets($ftp,100);
$count++;
rewind($ftp);
fwrite($ftp,"$count\n$REMOTE_ADDR\n$zeit\n");
fclose($ftp);
echo 
"<font face=Arial, Helvetica, sans-serif size=1>$count</font>";
}
else {
   echo 
"<font face=Arial, Helvetica, sans-serif size=1>$testarray[1]</font>";
   }
?>
Das Script ist nicht von mir, allerdings weiß ich auch nicht von wem des nu ist, ich hab mir das AFAIK mal aus irgendeinem Forum rauskopiert.
Alles was du machen musst, ist dieses Script dort in die Seite zu klatschen wo der Zähler angezeigt werden soll.
Und eine Datei namens counter.txt anzulegen und ihr den chmod 777 geben (wenn du auf einem Linux-System arbeitest).


Ein Script das auf Cookies zurückgreift hab ich leider nicht, allerdings dürfte das nicht all zu hart sein wenn man sich etwas über Cookies informiert:
http://www.php-center.de/de-html-man...setcookie.html

Cookies sind nichts anderes als ein Variablen-Container.
Pro Cookie kannst du eine Variable + dem dazugehörigen Wert speichern.
Der Cookiename ist hierbei der Variablenname und der Cookiewert eben der Wert dieser Variable.

Theoretisch musst du jetzt einfach nur ein Cookie anlegen lassen per setcookie():
PHP-Code:
setcookie ("chkvar""1"time()+3600); // 1 Std. gültig 
Der somit angelegte Cookie ist also nichts anderes als das Variablen-Wertepaar: $chkvar = "1"; welches sich selbst nach 1 Std. vom Client-Comp löscht.
Du brauchst übrigens keine Funktion um einen Cookie vom Script wieder aufzurufen, der Browser baut das Variablen-Wertepaar automatisch ins Script ein solange der Uer die selbe Domain ansteuert von der aus der jeweilige Cookie gesetzt worden ist.

Jetzt baust du ein simples if()-Konstrukt das checkt ob die Variable $chkvar "1" ist:
PHP-Code:
<?php if($chkvar == "1"){
// in dem Falle soll sich  nix tun.
}else{
// hier das jeweilige Counterscript einfügen:


// das hier ist die Cookiefunktion
setcookie ("chkvar""1"time()+3600);
?>
Wenn die Variable $chkvar in dem Cookie also 1 und somit gesetzt ist, tut das Script gar nix, weder zählen, noch einen neuen Cookie anlegen.
sollte aber ein neuer User auf die Seite kommen der noch keinen Cookie hat, oder jemand der schon seit ner Stunde nimmer gezählt wurde, wird sein Visit gezählt und (wieder) ein Cookie angelegt der wiederrum verhindert das der User innerhalb einer Stunde nochmal gezählt wird.

Ob das wirklich so funktioniert weiß ich nicht genau, ich hab mir das jetzt mehr oder weniger anhand meiner Kenntnisse zusammengereimt, selbst getestet hab ichs noch nie, musst eben mal versuchen.