Alternative zu Header

Kalito

Erfahrenes Mitglied
Ich habe heute ein kleines Programm bekommen und soll dies bissel umbauen. leider ist es so, das die ganzen Weiterleitungen nicht ****en, da durch verschiedene Konstrukte html-tags vor dem header-Location vorkommen Ihr müsst euch das etwa so vorstellen:

PHP:
<html>
   <head>
       //Javascriptteil
    </head>
    <body>
         <?php include('test.php') ?>;
    </body>
</html>


test.php
PHP:
<? php
     if(isset($_POST['submit'])){header("Location: test2.php")}
?>
<tr>
     <td><input type="submit" name="submit" /></td>
</tr>

Dies ist jetzt nur ein Beispielcode und wenn da Fehler drinnen sind, beachtet dies nicht. Aber man kann wunderbar sehen, das der Header-befehl nicht ****en kann, da ja vorher html steht.

gibt es eine Alternative zu header odr muss ich das ganze Ding umbauen und wenn ja, wie mache ich es am elegantestens
 
mit ob_start() die Ausgabe zurückhalten und mit und ob_end_flush() ganz am Schluss ausgeben. Nur Header-Funktionen übersteuern dieses cachen.
PHP:
<?php ob_start(); ?>
<html>
   <head>
       //Javascriptteil
    </head>
    <body>
         <?php include('test.php') ?>;
    </body>
</html>
<?php ob_end_flush(); ?>
 
Hi,

auch wenn das Thema schon erledigt ist möchte ich auch noch meinen Senf dazugeben.
Teilweise weiß man ja nicht, ob der Header schon gesendet wurde oder nicht und eine Filterung mit ob_start() ist auch nicht immer möglich.

Von daher hab ich mir eine kleine Hilfsfunktion gebastelt, welche die Weiterleitung wenn möglich per Header macht und falls diese bereits gesendet wurden, dann per normalen HTML-Meta. Ganz wichtig ist auch (was ich aber auch gern vergesse) das "die()" nach der Weiterleitung, ansonsten wird dein Script ganz normal weiter ausgeführt und das führt oftmals zu Problemen die man lange suchen kann...

Hinweis: "Config::$HTTP_CHARSET" einfach durch das von dir verwendete Charset ersetzen (ISO-8859-15, UTF-8, etc.)
PHP:
  public static function doRedirect($target) {
    if(headers_sent()) {
      $target = htmlentities(stripslashes($target), ENT_QUOTES, Config::$HTTP_CHARSET);
      echo '<meta http-equiv="refresh" content="0; url='
        . $target . '" />';

      echo '<br /><h3>Bitte warten Sie, Sie werden automatisch 
        weitergeleitet.<br />
        Falls die Weiterleitung nicht funktioniert, klicken Sie bitte
        <a href="' . $target . '">hier</a>.</h3></body></html>';
    } else {
      header("Location: " . $target);
    }   

    die();
  }

Gruß
BK
 
Zuletzt bearbeitet:
Zurück