Heizer: Weiterleitung mit location ?!?

Beitrag lesen

Ich weiß ja jetzt nicht genau, an welcher Stelle diese Funktion steht, aber $PHP_SELF ist eine Variable, die den URI der momentanen Seite als Wert hat. Wenn du also an $PHP_SELF weiterleitest, dann leitest du an die Seite selbst weiter. Vielleicht ist das der Fehler.

Die Funktion steht jeweils am Ende einer anderen Funktion bzw. Aktion - quasi als automatische weiterleitung zur Startseite, damit ich das nicht manuell per Klick machen muss.

Gibts da nicht ne andere Möglichkeit, automatisch weiterzuleiten ...

Es gibt natürlich noch die Möglichkeit, per <meta> weiterzuleiten
http://selfhtml.teamone.de/html/kopfdaten/meta.htm#weiterleitung, aber das ist Client-seitig, daß heißt, der Browser kann das unterdrücken (Opera hat diese Funktion). Im Prinzip würde ich die PHP-Variante mit header() vorziehen, und ich verstehe auch nicht ganz, was nun das Problem ist. setz einfach statt $PHP_SELF die URL deiner Startseite ein, und es sollte eigentlich alles funktionieren.

Wenn nicht, dann poste doch etwas mehr vom quelltext und eine genauere Beschreibung des Resultats, dann kann man das nochmal anschauen.

Was nacht das "header" am Anfang, kann es daran liegen?

Nein, header() ist die PHP-Funktion, die das senden sog. headers (Informationen die beim Seitenaufruf u.ä. zwischen Browser und Server getauscht werden) ermöglicht. Wichtig ist hier, daß die Funktion header() nur aufgerufen werden kann, solange noch keine Zeichen an den Browser geschickt wurden. Auch ein Leerzeichen vor dem ersten PHP-Bereich ist ein solches Zeichen!

Wie kann ich sicher Gehen, dass keinen Zeichen an den Browser geschickt wurden, bzw, wie kann ich das überprüfen?

Da PHP-Code nicht wie HTML "interpretiert" wird, sondern ausgeführt, gibt es aus Sicht von PHP nur richtig oder falsch. Soll heißen du bekommst dann eine Fehlermeldung, die in etwa so aussieht (weiß den exakten Wortlaut nicht mehr):

couldn't sent header information
output started at line ...

wenn du keine Fehlermeldung bekommst, haßt du es richtig gemacht.

Als Regel läßt sich hier sagen, daß vor dem Beginn des PHP-Blocks keine Zeichen stehen dürfen, das erste Zeichen deines quelltextes also <? sein muß. Desweiteren dürfen keine Ausgaben im PHP-Code stehen, also "echo" anweisungen o.ä. (auch nicht in per include() eingebundenen Dateien).
Alles andere ist erlaubt, du kannst auf datenbanken zugreifen und belibig viel Code verarbeiten, solange nichts davon an den Browser geschickt wird.

Hier ein gekürzter quelltext aus meiner Contact-seite

if ($submit_value == "absenden") { // Email soll versandt werden
  $sentmail = mail($Mail_to,$betreff,$mailbody,$mailheaders); // Email zusammenbauen
  header("Location: thanx.php?done=contact&status=$sentmail&bp=$referer"); // Weiterleitung zu einer Dankes-seite
  exit; // Ausführung der Seite wird angehalten
}

Hoffe, das hilft dir weiter

Heizer