marley: PHP-Umleitung

Hallo, ich habe eine PHP-Auswertungsdatei zu einem Formular ausgelagert, sprich es liegt auf einem anderen server.
Es geht dabei schlicht um das Auslesen der eingegeben Daten und weitersenden per mail().

Nun wird dem Benutzer eine leere Seite ausgegeben sobald er die Daten ausgefüllt und abgeschickt hat.

Also meine Frage:
Gibt es Umleitungsfunktion in PHP?
Also eine automatische Umleitung von auswertung.php zu einer anderen html-datei sobald alle Schritte in der PHP datei durchgeführt wurden?

  1. Hallo marley.

    Gibt es Umleitungsfunktion in PHP?

    Gewissermaßen ja: du kannst einen location-Header senden, welchen die meisten Clients annehmen und umsetzen.

    Einen schönen Donnerstag noch.

    Gruß, Ashura

    --
    Selfcode: sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
    30 Days to becoming an Opera8 Lover -- Keyboard Shortcuts
    Meine Browser: Opera 8.50 | Firefox 1.0.7 | Lynx 2.8.5 | Konqueror 3.3.2 | Netscape 4.7 | IE 6.0
    Use OpenOffice.org
    1. Vielen Dank für die schnelle Antwort!

      Auf der PHP-Seite hab ich auch schon so manche Funktion nachgeschlagen, allerdings als ich versucht habe eine Funktion zu finden die meine Aufgabe erfüllt, wurd ich dort leider nicht fündig, da ich mit den vielen Bibliothek-Namen bzw. function-lists nicht durchgeblickt habe bei den vielen Begriffen und Fachausdrücken.

      Daher: Kennt jemand eine PHP-Seite mit unfamgreichem function-Archiv das übersichtlich geordnet ist und man benutzen kann wenn man etwas spezielles durchführen will allerdings die Funktion dazu nicht kennt?

      MfG Marley

      1. Hallo marley.

        Daher: Kennt jemand eine PHP-Seite mit unfamgreichem function-Archiv das übersichtlich geordnet ist und man benutzen kann wenn man etwas spezielles durchführen will allerdings die Funktion dazu nicht kennt?

        Du siehst ebenso wie ich dieses kleine nette Suchformular rechts oben auf der php.net-Seite?
        Gib diesem einen englischen Suchbegriff und du wirst meist fündig.

        Einen schönen Donnerstag noch.

        Gruß, Ashura

        --
        Selfcode: sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
        30 Days to becoming an Opera8 Lover -- Keyboard Shortcuts
        Meine Browser: Opera 8.50 | Firefox 1.0.7 | Lynx 2.8.5 | Konqueror 3.3.2 | Netscape 4.7 | IE 6.0
        Use OpenOffice.org
        1. Ui, ok, ich hab da dummerweise meine Anfragen immer in Deutsch geschrieben und bin wohl daher kaum auf Ergebnisse gestoßen ;)

          Danke nochmal.

  2. Hallo,

    Nun wird dem Benutzer eine leere Seite ausgegeben sobald er die Daten ausgefüllt und abgeschickt hat.

    Dann hast du ein Problem entweder mit dem Aufruf oder mit der Ausführung des PHP-Scripts. Ich kann mir nicht vorstellen, dass eine Umleitung daran etwas ändern kann.

    * Verweist das action-Attribut auf das Script auf dem fremden Server, oder noch auf dein eigenes?
     * Wird PHP auf dem fremden Server ausgeführt? Kannst du *andere* PHP-Scripte dort ausführen?
     * Hast du dich bei deinem Script bisher auf register_globals verlassen (böse[tm]!), und das ist auf dem anderen Server nun deaktiviert, wie sich das gehört?

    Gibt es Umleitungsfunktion in PHP?
    Also eine automatische Umleitung von auswertung.php zu einer anderen html-datei sobald alle Schritte in der PHP datei durchgeführt wurden?

    Ja, mit einem Location: Header. Aber vorher solltest du wirklich sicherstellen, dass das Script korrekt arbeitet. Und wenn das der Fall ist, gibt es auch keinen vernünftigen Grund, warum du die Ausgabe dieses Scripts nicht siehst.

    So long,

    Martin

    1. Ja, mit einem Location: Header. Aber vorher solltest du wirklich sicherstellen, dass das Script korrekt arbeitet. Und wenn das der Fall ist, gibt es auch keinen vernünftigen Grund, warum du die Ausgabe dieses Scripts nicht siehst.

      Das Script funktioniert einwandfrei.
      Jmd gibt Daten in die Formularfelder ein auf einer HTML Seite die auf Server A liegt -
      Diese Daten werden ausgewertet durch eine check.php Datei auf server B.
      In dieser PHP Datei steht allerdings nur "schicke die ausgewerteten Daten an xy" - nicht was auf den Bildschirm danach erscheinen soll -> daher leere Seite.

      Was ich will ist:
      Das Script (auf server B) soll die Daten an xy verschicken und dann weiterleiten wieder auf eine html Seite auf server A auf der dann sowas steht wie "Versand erfolgreich. Vielen Dank" ...

      Gibt es da noch eine bessere Lösung?
      Anfangs dachte ich an sowas wie
      if(Bedingung->Daten verarbeitet)
      goto (URL xy) ...
      aber sowas gibt es wohl nicht ...?

      1. Hallo,

        Jmd gibt Daten in die Formularfelder ein auf einer HTML Seite die auf Server A liegt -
        Diese Daten werden ausgewertet durch eine check.php Datei auf server B.
        In dieser PHP Datei steht allerdings nur "schicke die ausgewerteten Daten an xy" - nicht was auf den Bildschirm danach erscheinen soll -> daher leere Seite.

        Aha, jetzt hab ich's verstanden.

        Das Script (auf server B) soll die Daten an xy verschicken und dann weiterleiten ...

        Das bedeutet, dass du dasScript auf Server B bearbeiten kannst (denn sonst könntest du ihm keine Weiterleitung spendieren). Also warum willst du nicht in *diesem* Script auch die Ausgabe realisieren? Das hätte sogar noch den Vorteil, dass der User auch eine Info bekommen könnte, wenn beim Versand ein Fehler auftritt. Die kriegt er ja nicht, wenn das Script nur "irgendwas" im Verborgenen tut und stur auf eine bestimmte Seite weiterleitet.

        Diese reine Weiterleitung erreichst du, wie ich schon sagte, mit der PHP-Anweisung

        header("Location: $url");

        wobei $url eine vollständige, absolute URL enthalten muss, und das Script darf vor dieser Anweisung keine Daten an den Browser zurückgeben (nicht mal eine Leerzeile oder ein Blank).

        So long,

        Martin

        1. Das Script (auf server B) soll die Daten an xy verschicken und dann weiterleiten ...

          Das bedeutet, dass du dasScript auf Server B bearbeiten kannst (denn sonst könntest du ihm keine Weiterleitung spendieren).

          Das Script kann ich bearbeiten, ja.

          Also warum willst du nicht in *diesem* Script auch die Ausgabe realisieren?

          Das will ich deswegen nicht, weil die Seiten in einem bestimmten grafischem Design präsentiert werden. Wenn ich umleite auf eine URL auf serverA kann ich diese Seite ("Daten erfolgreich versand") auch in diesem Design präsentieren/beibehalten.
          Wenn ich der PHP-Datei die Ausgabe überlasse, kann ich dieses Design nicht übernehmen (da grafikdateien auf serverA) - das könnte den user dann irritieren, wenn aufeinmal nur noch ein schlichtes "Daten übermittelt" auf einer ansonsten weißen Seite steht ...

          Diese reine Weiterleitung erreichst du, wie ich schon sagte, mit der PHP-Anweisung

          header("Location: $url");

          Also die Weiterleitung funktioniert, allerdings werden die Daten jetzt nicht mehr übermittelt.
          Kann es sein das das script die URL-Umleitung macht bevor überhaupt eine Auswertung stattfinden kann?

          1. Hallo marley,

            Also warum willst du nicht in *diesem* Script auch die Ausgabe realisieren?

            Das will ich deswegen nicht, weil die Seiten in einem bestimmten grafischem Design präsentiert werden. Wenn ich umleite auf eine URL auf serverA kann ich diese Seite ("Daten erfolgreich versand") auch in diesem Design präsentieren/beibehalten.
            Wenn ich der PHP-Datei die Ausgabe überlasse, kann ich dieses Design nicht übernehmen (da grafikdateien auf serverA) - das könnte den user dann irritieren, wenn aufeinmal nur noch ein schlichtes "Daten übermittelt" auf einer ansonsten weißen Seite steht ...

            Als Erklärungsansatz okay - er überzeugt mich aber nicht. Erstens könntest du problemlos in einem Script von Server B auch die Grafiken von Server A referenzieren, und zweitens könntest du, wenn du die serverübergreifenden Zugriffe nicht möchtest, die Bilder auch auf Server B kopieren.
            Leuchtet mir also nicht ganz ein, aber das musst du selbst wissen. Für mich scheint es, als ob du Probleme siehst, wo gar keine sind. ;-)

            Also die Weiterleitung funktioniert, allerdings werden die Daten jetzt nicht mehr übermittelt.

            Da besteht aber kein direkter Zusammenhang.

            Kann es sein das das script die URL-Umleitung macht bevor überhaupt eine Auswertung stattfinden kann?

            Nein, es sei denn, du wirfst den Header aus und beendest das Script dann sofort z.B. mit exit(). Wenn du wirklich nur am Anfang des Scripts die erwähnte header-Anweisung einfügst, hat das auf den restlichen Ablauf des Scripts keine Auswirkungen.

            Schönes Wochenende,

            Martin

            1. ok, nun funktioniert es.

              Ist es eigentlich möglich den header unter bestimmten Bedingungen (if-schleife) auszuführen?

              Also z.B. wenn ich die eingegebenen Daten nach Richtigkeit überprüfen will, wenn z.B. im e-mail-Feld kein @ eingegeben wurde etc.

              Also in etwa nach dieser Logik:
              Wenn email kein @ enthält gehe zur URL xy
              (URL xy: Bitte korrekte e-mail eingeben).
              Wenn email korrekt gehe zur URL ab
              (URL ab: Eingeben korrekt, vielen Dank).
              usw.