Einmal mehr: Fehler bei HEADER(location:"")

remuen

Mitglied
Hallo

Die Funktion header(location:"") scheint ja für viele ein Stolperstein zu sein ... Wie anscheinend andere schon vor mir habe ich ein Problem, nämlich dass beim Aufruf der Funktion folgender Fehler auftritt:

Warning: Cannot modify header information - headers already sent by (output started at .../test/clickcounter/clicks.php:2) in .../test/clickcounter/clicks.php on line 4

Ich als (noch) PHP-Anfänger möchte damit einen einfachen Click-Zähler realisieren, indem ich von meiner Linkliste aus mit
PHP:
<a href="clicks.php?url=http://www.nak-badragaz.ch">test</a>
das PHP-Programm clicks.php aufrufe, den Klick zähle, in ein Textfile schreibe und dann eben die gewünschte URL mit der Funktion header()
aufrufe.

Hier der Code in clicks.php:
PHP:
   <?php
   if($url!="")
      {
      header("location:".$url.""); // weiterleitung
      $file="click.dat"; // datei in der der stand gespeichert wird
      .... //hier folgt der Code zum Zählen und Schreiben in die Datei
     }
   ?>
Mehr steckt nicht in dem File, also keine HTML-Ausgabe, der header-Aufruf steht ganz am Anfang ..

Ich habe auch bereits herausgefunden, dass ich die ganze Problematik mit
PHP:
<meta http-equiv="Refresh" content="2; url=http://www.nak-badragaz.ch">
zwar umgehen könnte, nur ist eine solche Umgehung nicht die Lösung des Problems, denn damit weiss ich für's nächste Mal immer noch nicht, warum die Funktion nicht richtig arbeitet.

Wer kann mir hier weiterhelfen? Was mache ich falsch? In den bisherigen Beiträgen zu diesem Thema habe ich keine Lösung (ausser was ich bereits geschrieben habe) gefunden.

Danke und Gruss

René
 
probier mal folgendes:

PHP:
 <?php
ob_start();
   if($url!="")
      {
      $file="click.dat"; // datei in der der stand gespeichert wird
      .... //hier folgt der Code zum Zählen und Schreiben in die Datei
      header("location: $url"); // weiterleitung
     }
ob_end_flush();
   ?>


Der header Aufruf steht nicht ganz am Anfang! " if($url!="") " ist bei dir in der ersten Zeile sprich am Anfang.
 
Zuletzt bearbeitet:
Hallo.

OK, auch wenn der Fehler in der 2. Zeile ausgelöst wird (laut Fehlermeldung)

Warning: Cannot modify header information - headers already sent by (output started at .../test/clickcounter/clicks.php:2) in .../test/clickcounter/clicks.php on line 4

glaube ich kaum, dass das an der If-Abfrage liegt.
Denn folgendes Script leitet mich automatisch nach google weiter (hab's grad ausprobiert):

PHP:
<?php
	$url = "http://www.google.de";
	if ($url != "") {
		header("Location: $url");
	}
?>

Kann das nicht woanders drann liegen (z. B. Leerzeichen vor <?php
 
Original geschrieben von rootssw
Kann das nicht woanders drann liegen (z. B. Leerzeichen vor <?php

Hallo
Das war's - ich geb's ja zu, Du hast mich auf frischer Tat erwischt! Ich hab nämlich vor dem <?php wirklich noch eine Zeile mit Kommentar gehabt und dort am Anfang der Zeile zwei Leerschläge .......

Ich hätte nie gedacht, dass das solche Auswirkungen haben kann! Das ganze hat mich nun inkl. Suchen im Forum und den Beitrag schreiben über zwei Stunden gekostet - sprich durchschnittlich eine Stunde pro Leerschlag :( ;)

Vielen Dank für Eure Hilfe!

Gruss
René
 
Zurück