Alternative für header beim affenformular

Hallo ich habe ein Problem. Ich hab mein Affenformular soweit fertig und es müsste eigentlich funktionieren. Das einzige was nicht geht ist, den Nutzer auf die nächste Seite zu leiten. ich habs versucht mit header(„Location: datei.php“); aber anscheinend habe ich vorher irgendwo vorher eine ausgabe. Kann mir jemand helfen die Ausgabe zu finden oder wie ich es anders machen könnte? Im internet hab ich gelesen, dass es mit flush() und ob_start funktionieren soll. Aber ich kapiere nicht genau wie. Schon mal vielen Dank für die Hilfe und hier noch mal der code:

<?php require_once ('zugang.php');
if (isset($\_POST['schichtzahl']) and isset($\_POST['titel']) and isset($\_POST['beschreibung'])) { $schichtzahl=$\_POST['schichtzahl']; $titel=$\_POST['titel']; $beschreibung=$\_POST['beschreibung']; $bindex=0; $error=false; $db= mysql\_pconnect(HOST,BENUTZER,PASSWORT); if (!$db) {$ermsg="Die Verbindung zur Datenbank ist Fehlgeschlagen!"; exit; } mysql\_select\_db(DATENBANK); $anfrage = "SELECT \* FROM aufgaben"; $ergebnis = mysql\_query($anfrage); $anz\_ergebnis = mysql\_num\_rows($ergebnis); for ($i=0; $i {$row = mysql\_fetch\_array($ergebnis); if ($row["titel"]==$titel) {$error=true; $ermsg=" Der Titel ist bereits vorhanden!";} if (!$titel) {$error=true; $ermsg=' Sie haben keinen Titel angegeben. Tragen Sie ihn ein! ';} elseif (!$beschreibung) {$error=true; $ermsg=' Sie haben keine Beschreibung angegeben. Tragen Sie sie ein ';} elseif (!$schichtzahl) {$error=true; $ermsg=' Sie haben keine Schichtanzahl angegeben. Tragen Sie sie ein!';} elseif (!is\_numeric($schichtzahl)) {$error=true; $ermsg='Die Anzahl der Schichten muss eine ganze Zahl sein! ';} elseif (preg\_match("/\w\./",$schichtzahl)){$error=true; $ermsg=' Bitte keine Kommazahlen für die Anzahl der Schichten! ';} else {header("Location: aufgerst.php"); } } } ?\>

Hallo

Mit ob_start() kann man Ausgaben von echo, print und ähnlichen Befehlen so lang zurückhalten, bis der Header gesendet wurde. Wenn solche Befehle nicht eingesetzt werden, nützt auch ob_start() nichts.

Wenn du eine Fehlermeldung wie „Headers already sent on line 3 in index.php“ bekommst, dann schau an besagter Stelle nach und sorge dafür das dort keine Textausgabe passiert. Schon ein Leerzeichen vor dem öffnenden php-Tag ist zuviel.

Außerdem sagt php.net dazu: HTTP/1.1 verlangt einen absoluten URI.
Das könnte auch der Fehler sein. Versuchst also mal komplett mit http://.

Gruß, sigterm

Hallo jurij1510,

ein allseits beliebter Fehler ist, dass deiner Datei nicht im ASCII Format gespeichert ist und beim Includen gibt es dann zwei nicht druckbare Zeichen.

Cu Stefan

Moin!

Die Punkte meiner Vorposter könnten ein Grund sein. Aber es ist auch etwas Anderes möglich: Selbst wenn es ASCII-Dateien sind und KEIN Zeichen VOR dem <?php kommt, kann es sein, dass eine der eingebundenen Dateien z.B. so aussieht:

<?php
// Hier der PHP-Code der Datei ?\> Das Problem könnte hier auch hinter dem ?\> liegen. Wenn da ein " " oder ein Zeilenumbruch steht, ist das auch eine Ausgabe, die zum Senden der Header führt. Deshalb würde ich eher dort mal schauen, ob eine Datei ein Leerzeichen oder Zeilenumbrüche am Ende enthält. Man kann aber auch einfach das "?\>" weglassen, dann wird der Rest der Datei bis zum Ende ausgeführt - ist aber nicht so schön wie ich finde. Grundsätzlich würde ich aber die Korrektur der eingebundenen Dateien einer Verwendung von ob\_start() etc. vorziehen. Im Übrigen gilt bei der Verwendung von ob\_start() jegliche Ausgabe, egal, ob außerhalb des PHP-Bereiches oder durch Verwendung einer Funktion wie echo, etc., denn: ob\_start() sort nur dafür, dass sämtliche Ausgaben erstmal in einen internen Puffer geschrieben werden (abgesehen von den Header-Informationen). Man erhält dadurch die Möglichkeit im Nachhinein die Daten im Puffer zu bearbeiten oder auch zu löschen, bevor der Inhalt an den Benutzer geschickt wird. Dazu würde ich einfach mal die Dokumentation von PHP konsultieren, da sind auch immer gute Beispiel-Scripte dabei, die einem weiterhelfen können. MfG Lutz

Vielen dank für die hilfe. Ich habe mir die fehlermeldung angesehn. es war die datei die ich mit require_once eingefügt habe, die probleme bereitet hat.