Counter-Cookie-Problem
exciter
- php
0 aw
Hi Community-Mitglieder, ich habe mir einen Counter mit Cookie gebaut, aber es klappt nicht so wie ich es will, hier das Script:
<?php
if(!isset($HTTP_COOKIE_VARS["counter"])) {
$datei="count.dat";
$zeiger=fopen($datei, "r");
$counter=fgets($zeiger, 10);
fclose($zeiger);
$counter++;
$zeiger=fopen($datei, "w");
fputs($zeiger, $counter);
fclose($zeiger);
echo $counter;
setcookie("counter","blocked",time()+3600);
}
else {
$datei="count.dat";
$zeiger=fopen($datei, "r");
$counter=fgets($zeiger, 10);
fclose($zeiger);
echo $counter;
}
?>
Ich bekomme nur die Fehlermeldung, dass der Header schon abgeschickt wurde (oder so), wenn ich das Cookie schon ganz am Anfang setzte, erscheint die Fehlermeldung nicht. Allerdings habe ich mir auch schon eine Umfrage mit Cookie gebaut, das Cookie hier mitten im Script gesetzt, und trotzdem hat alles funktioniert. Was geht bei dem Counter nicht?
hi.
"...vor irgendwelchen <html>- oder <head>-Tags im Skript einsetzen".
http://www.php.net/manual/de/function.setcookie.php
lg aw
Das habe ich gemacht, einfach den PHP-Code aufgerufen, trotzdem diese Meldung:
Warning: Cannot add header information - headers already sent by (output started at c:programmeapache groupapachehtdocscounterconfig.php:11) in c:programmeapache groupapachehtdocscounterconfig.php on line 12
Aloha!
Das habe ich gemacht, einfach den PHP-Code aufgerufen, trotzdem diese Meldung:
Warning: Cannot add header information - headers already sent by (output started at c:programmeapache groupapachehtdocscounterconfig.php:11) in c:programmeapache groupapachehtdocscounterconfig.php on line 12
Die Fehlermeldung ist unmissverständlich: Irgendwas _vor_ Zeile 12 hat HTML-Code (auch Leerzeichen und Leerzeilen) mit echo, print oder außerhalb von <? ?> ausgegeben, so dass dein Cookie nicht mehr gesetzt werden kann.
Da es "schon" in Zeile 12 zu diesem Problem kommt: Deine Datei muss gleich als erstes Zeichen mit "<?php" beginnen. Kein Leerzeichen, keine Leerzeile. Und darf dann nur mit PHP-Code arbeiten bis zum Cookie-Setzen - aber ohne irgendeine Ausgabe mit echo oder print zu generieren. Dann sollte alles funktionieren.
- Sven Rautenberg
Nochmal Aloha!
Die Fehlermeldung ist unmissverständlich: Irgendwas _vor_ Zeile 12 hat HTML-Code (auch Leerzeichen und Leerzeilen) mit echo, print oder außerhalb von <? ?> ausgegeben, so dass dein Cookie nicht mehr gesetzt werden kann.
Ja, und zwar Zeile 11:
echo $counter;
setcookie("counter","blocked",time()+3600);
Zeilen umdrehen, und dann geht es. Allerdings frage ich mich, warum du an dieser Stelle den Inhalt des Counters ausgeben willst, so ganz am Anfang der Seite. Üblicherweise beginnt man doch mit einem <!DOCTYPE>, dann kommt <HTML>, <HEAD>, und erst nach <BODY> macht eine Counterausgabe Sinn.
- Sven Rautenberg