Gustav Heine: Header-Weiterleitung nach Datenverarbeitung

N´Abend!

Wie kann ich mit PHP eine Header-Weiterleitung veranlassen, die aber nicht ganz oben im Dokument steht, da ich vorher in der Datei noch Daten verarbeiten will. Genauer erklärt: Ich habe eine Seite A. Von dieser Seite A aus wird per Formular mit POST-Methode etwas an die Seite B (meine PHP-Datei) gesendet. Diese Seite B soll die ankommenden Daten verarbeiten, (in eine Datei speichern, usw.) und dann erst soll an eine andere Seite C bzw. wieder an die Seite A weitergeleitet werden.

Greets Gustav

  1. Hallo Gustav,

    Wie kann ich mit PHP eine Header-Weiterleitung veranlassen, die aber nicht ganz oben im Dokument steht, da ich vorher in der Datei noch Daten verarbeiten will. Genauer erklärt: Ich habe eine Seite A. Von dieser Seite A aus wird per Formular mit POST-Methode etwas an die Seite B (meine PHP-Datei) gesendet. Diese Seite B soll die ankommenden Daten verarbeiten, (in eine Datei speichern, usw.) und dann erst soll an eine andere Seite C bzw. wieder an die Seite A weitergeleitet werden.

    Das Problem, das Du ansprichst, ist nicht ganz trivial. Wenn Du etwas in Englisch bewandert bist, dann würde ich Dir http://ppewww.ph.gla.ac.uk/~flavell/www/post-redirect.html empfehlen.

    Ansonsten: (vorher darf das Script keine Ausgabe produzieren!)

    if ($_SERVER['SERVER_PROTCOL'] == 'HTTP/1.1') {
      Header ('HTTP/1.1 303 See other');
    }
    Header ('Location: ' . $uri);

    in $uri steht dann das Weiterleitungsziel. (Muss eine absolute URI sein, als mit http:// - relative URIs werden zwar von einigen HTTP-Clients [1] (nicht allen!) interpretiert, aber es ist nicht erlaubt)

    Christian

    [1] Wozu u.a. auch Browser zählen, jedoch nicht ausschließlich. Suchmaschinenroboter und Mirroring-Tools zählen z.B. auch dazu.

    --
    Hast Du einen Beitrag? Nur her damit!
    http://aktuell.de.selfhtml.org/tippstricks/beitrag.htm
  2. Hi!

    Wie kann ich mit PHP eine Header-Weiterleitung veranlassen, die aber nicht ganz oben im Dokument steht, da ich vorher in der Datei noch Daten verarbeiten will. Genauer erklärt: Ich habe eine Seite A. Von dieser Seite A aus wird per Formular mit POST-Methode etwas an die Seite B (meine PHP-Datei) gesendet. Diese Seite B soll die ankommenden Daten verarbeiten, (in eine Datei speichern, usw.) und dann erst soll an eine andere Seite C bzw. wieder an die Seite A weitergeleitet werden.

    Du kannst die Weiterleiung überall hinschreiben, es darf vorher nur keine Ausgabe erfolgen. Du kannst munter Daten in Dateien schreiben, Datenbanktransaktioenn ausführen Berechnungen... alles was Du willst, solange keine Ausgabe erfolgt. Solange noch keine Ausgabe erfolgt ist kannst Du header() verwenden.

    Grüße
    Andreas

    1. Komisch, es lag wohl daran:

      Wenn ich
      <?php
      irgendwas...
      ...
      ...
      ?>

      <?php
      .....
      ..
      Header ('Location: seite.php');
      ?>
      schreibe, dann geht´s nicht. Wenn ich aber
      <?php
      irgendwas...
      ...
      ...

      .....
      ..
      Header ('Location: seite.php');
      ?>
      schreibe, dann geht´s. Ich darf also nur einmal den <?php Tag öffnen

      Danke euch.

      Gustav Heine

      1. Hi!

        Ich darf also nur einmal den <?php Tag öffnen

        Nein, denn wenn Du das machst schaltet PHP auf "HTML-Modus" um, wenn dann nur ein Leerzeichen kommt werden die Header erzeugt und an den Client gesendet. Dann ist es für jeden weiteren Header zu spät.

        Grüße
        Andreas