Einfacher Counter - geht leider nicht
Siegmund
- php
Hallo allerseits,
ich will auf meine Seite am Fussende einen einfachen Counter in php einfügen. Der Rest der Seite ist nur html. Der Quelltext des Counters sieht folgendermassen aus:
<?php
$cfile = "count.txt"; // Zaehldatei
if(!file_exists($cfile)){
print("Zählerdatei nicht gefunden!");
die;
}
$fp = fopen($cfile, "r") or die("Konnte Zählerdatei nicht öffnen!");
$count = fgets($fp, 1024);
fclose($fp); // Datei wieder schließen
session_start(); // Session starten (Reloadsperre)
if(!$PHPSESSID) // bei neuer Session erhöhen
$count++;
$fp = fopen($cfile, "w") or die("Konnte Zählerdatei nicht öffnen!");
fputs($fp, $count);
fclose($fp);
print("$count");
?>
Die count.txt habe ich auch auf den Server geladen und mit den rechten 777 versehen. Dennoch bekomme ich beim Aufruf der Seite an der Stelle wo der Counter stehen sollte folgende Warnung:
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/htdocs/web8/html/Spendenaktion.php:14) in /home/htdocs/web8/html/Spendenaktion.php on line 154
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/htdocs/web8/html/Spendenaktion.php:14) in /home/htdocs/web8/html/Spendenaktion.php on line 154
Sieht jemand von euch einen Fehler?
Hello,
<?php
$cfile = "count.txt"; // Zaehldatei #ok
$fh = fopen($cfile,'a'); # Datei neu anlegen oder zum Anhängen öffen
if (!$fh)
{
exit; # oder eben einfach nicht zählen...
}
fclose($fh); # Dummy-Handle wieder zurückgeben.
$fh = fopen($cfile, 'rb+'); # Datei binär zum Lesen und Schreiben öffnen
$fh = fopen($cfile, "r") or die("Konnte Zählerdatei nicht öffnen!");
if (!flock($fh, LOCK_EX))
{
fclose($fh);
exit; # oder eben wieder einfach nicht zählen
}
$count = intval(fgets($fp, 1024));
session_start(); // Session starten (Reloadsperre)
#if(!$PHPSESSID) // bei neuer Session erhöhen # ob das wirklich funktioniert?
# siehe 'register_globals' im Archiv
$sname = session_name();
if (empty($_COOKIE[$sname]) and empty($_POST[$sname]) and emtpy $_GET[$sname]))
$count++;
fseek($fh, 0, SEEK_SET); # Dateizeiger auf Anfang
fputs($fh, $count);
ftruncate($fh,strlen($count)); # Dateilänge anpassen. Wenn immer nur erhöht wird, kann das entfallen
fclose($fp);
print("$count");
?>
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
OK vielen Dank
Hello,
sorry,
das Dateihandle muss natürlich überall denselben Namen haben.
Da sind ein paarmal $fh und $fp durcheinander geraten...
Harzliche Grüße aus http://www.annerschbarrich.de
Tom