Siegmund: Einfacher Counter - geht leider nicht

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?

  1. Hello,

    <?php
     $cfile = "count.txt"; // Zaehldatei  #ok

    if(!file_exists($cfile))

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

    fclose($fp);  // Datei wieder schließen # nein, keinesfalls das Handle weggeben!

    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++;

    $fp = fopen($cfile, "w") or die("Konnte Zählerdatei nicht öffnen!"); # ist schon offen

    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

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. OK vielen Dank

    2. 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

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau