Gerd Gruber: header (Location ..

Hallo Leute,

hoffentlich kann mir hier jemand helfen.
Ich kenne den php-header-Befehl der Form z.b.:
header("Location: http://www.testen.de/test.php?var1=1&var2=2");

Ich muss aber in Location auf ein php-script umleiten, dass alle Variablen per POST-Methode erhalten möchte. Variablen übergaben per GET funktioniert bei diesem aufzurufenden script leider nicht.

Wie gebe ich dies in der header-Funktion an, Variablen per POST weiterzuschicken. Auf www.php.net habe ich leider nichts passendes gefunden

grüße an alle

Gerd

  1. Hallo,

    Wie gebe ich dies in der header-Funktion an, Variablen per POST weiterzuschicken.

    Geht AFAIK nicht.
    Mit dem Location-Header schickst Du ja dem Browser
    die neue URL, und dieser verlangt dann diese Ressource
    vom Webserver.

    Du koenntest hoechstens mit PHP selbst eine POST-Anfrage
    an den betreffenden Webserver starten und dann das
    Ergebnis ausgeben.
    Also mit PHP "Browser spielen".

    In einem Benutzerkommentar zu fsockopen()
    (such nach "connectToURL")
    http://www.php.net/manual/de/function.fsockopen.php
    hat es ein Beispiel mit GET. Ich wende es erfolgreich an,
    sogar mit HTTP-Authentication.

    Die HTTP-Anfrage kann wahrscheinlich auch auf POST angepasst werden.
    (Du musst Dich halt in HTTP auskennen bzw. einlesen...)

    Wenn der Betreiber des anderen Website damit nicht einverstanden ist,
    solltest Du das ganze aber unterlassen.

    Gruesse,

    Thomas

    --
    Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
    Ich mag es, wenn URLs verlinkt sind (</faq/#Q-19>).
    Oft gestellte PHP-Fragen beantwortet die dclp-FAQ bestens: http://www.dclp-faq.de/
  2. Hallo Gerd,

    Ich muss aber in Location auf ein php-script umleiten, dass alle Variablen per POST-Methode erhalten möchte. Variablen übergaben per GET funktioniert bei diesem aufzurufenden script leider nicht.

    AFAIK können POST-Parameter nur von Formularen versendet werden, alles was über die URL läuft sind GET-Parameter. Nur mal so eine Idee als Workaround: Du könntest Deine Parameter in hidden fields eines Formulars eintragen das dann so nicht sichtbar ist und sich halt selbst verschicken müsste (muss wohl per Javascript gelöst werden). Ich weiss jetzt nur nicht ob es aus Sicherheitsgründen überhaupt möglich ist ein Formular ohne Userinput zu versenden? Ich weiss dass das ganze eine ziemliche Krücke ist aber Deine Anfrage ist auch ein wenig ungewöhnlich :-)

    Hast Du keinen Zugriff auf das Script um dieses zu ändern? Wenn das Script sowohl GET- als auch POST-Parameter erwarten könnte gibt es da noch die Superglobale $_REQUEST, da stehen dann sowohl GET- als auch POST-Parameter drinne...

    Wie gebe ich dies in der header-Funktion an, Variablen per POST weiterzuschicken. Auf www.php.net habe ich leider nichts passendes gefunden

    Geht per header() AFAIK nicht?

    Grüsse AndreD

    1. Hallo,

      Nur mal so eine Idee als Workaround: Du könntest Deine Parameter in hidden fields eines Formulars eintragen

      Genau. Diese Loesung kam mir auch noch in den Sinn.
      Das Formular darf IMHO durchaus sichtbar sein.
      Zumindest als Submit-Button "Weiter..." oder so
      stoert dieser Workaround ja kaum.

      Dann wuerde das Formular ja wieder vom Browser selbst
      per POST abgeschickt.

      Dumm nur, wenn das verarbeitende Skript auf den Referer prueft...

      Auf JavaScript sollte man sich nicht verlassen...
      (Und ich hoffe, dass das automatische Abschicken
      bei anstaendigen Browsern gar nicht moeglich ist.)

      Gruesse,

      Thomas

      --
      Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
      Ich mag es, wenn URLs verlinkt sind (</faq/#Q-19>).
      Oft gestellte PHP-Fragen beantwortet die dclp-FAQ bestens: http://www.dclp-faq.de/
      1. Hallo Thomas,

        Genau. Diese Loesung kam mir auch noch in den Sinn.
        Das Formular darf IMHO durchaus sichtbar sein.
        Zumindest als Submit-Button "Weiter..." oder so
        stoert dieser Workaround ja kaum.

        Ja, ich meine ich hätte das auch schon mal als User irgendwann irgendwo so gesehen und benutzt.

        Dann wuerde das Formular ja wieder vom Browser selbst
        per POST abgeschickt.

        Das war auch mein Gedanke dahinter ;-)

        Dumm nur, wenn das verarbeitende Skript auf den Referer prueft...

        Also wenn ich das so verstehe das man prüft - "wo kommt der den eigentlich her?" - hab ich noch nie gemacht. Wenn ich was schützen will generiere ich eine codierte (MD5) URI und setz die per header() ab, oder nicht?

        Auf JavaScript sollte man sich nicht verlassen...

        FullACK! Deshalb nutze ich das auch so gut wie nie, vielleicht mal in einem Adminbereich der Komfortabelität wegen ;-)

        (Und ich hoffe, dass das automatische Abschicken
        bei anstaendigen Browsern gar nicht moeglich ist.)

        FullACK, Zumindest der Mozilla frägt bei immer nach, kann man aber auch denke ich ausschalten :-)

        Grüsse AndreD

        1. Hallo,

          Dumm nur, wenn das verarbeitende Skript auf den Referer prueft...
          Also wenn ich das so verstehe das man prüft - "wo kommt der den eigentlich her?" - hab ich noch nie gemacht. Wenn ich was schützen will generiere ich eine codierte (MD5) URI und setz die per header() ab, oder nicht?

          Das wird nichts nuetzen.

          Das Formular ist IMHO in jedem Fall
          http://DeineSeite.example.org/formular.php

          Von dort geht der Benutzer durch Klick auf "Submit" aufs Skript
          http://FremdeSeite.example.com/skript.cgi

          In diesem Skript steht - falls der Browser ueberhaupt
          einen Referrer schickt u.s.w. - in der Variable $HTTP_REFERER
          bzw. in PHP in $_SERVER['HTTP_REFERER'] die URL Deines Formulars.

          Falls die FremdeSeite auf den Referrer prueft, schaut sie
          hoechstwahrscheinlich, ob dessen URL mit
          http://FremdeSeite.example.com/ oder http://www.FremdeSeite.example.com/
          anfaengt (oder leer ist).
          In allen anderen Faellen weigert sich das Skript,
          die Daten auszugeben.

          mfg
          Thomas

          P.S. Jaja, ich kenne
          Warum ist es schlecht, mit dem Referer zu arbeiten?
          http://www.dclp-faq.de/q/q-http-referer.html

          1. Hallo,

            In allen anderen Faellen weigert sich das Skript,
            die Daten auszugeben.

            Ok ist klar, ich dachte da an eine andere Art der Anwendung und nicht mehr an das gestellte Bsp. vom Gerd. Von da her: Vergiss es :-)

            P.S. Jaja, ich kenne
            Warum ist es schlecht, mit dem Referer zu arbeiten?
            http://www.dclp-faq.de/q/q-http-referer.html

            Hab nix gesagt und nur daran gedacht, hätte Dir es aber jetzt auch nicht irgendwie ala "...jaaaaa... und was ist mit: Warum ist es schlecht..." *gg* Die Seite ist super, klar... aber auch nicht das Evangelium, nää? :-)

            Grüsse AndreD

            1. Hallo,

              Ok ist klar, ich dachte da an eine andere Art der Anwendung und nicht mehr an das gestellte Bsp. vom Gerd.

              Und ich hatte uebersehen, dass Du nicht der OP (d.h. Gerd) bist. ;-)

              [dclp-FAQ] Die Seite ist super, klar... aber auch nicht das Evangelium, nää? :-)

              Nein. Ich kann es mir einfach nicht verkneifen, auf
              diese FAQ hinzuweisen, insbesondere, weil dieses
              Posting ja irgendwann mal im Archiv landet... ;-)

              Freundliche Gruesse und einen geruhsamen Abdend,

              Thomas

              1. Hi Thomas,

                Und ich hatte uebersehen, dass Du nicht der OP (d.h. Gerd) bist. ;-)

                *gg*

                Nein. Ich kann es mir einfach nicht verkneifen, auf
                diese FAQ hinzuweisen, insbesondere, weil dieses
                Posting ja irgendwann mal im Archiv landet... ;-)

                Ich verweise auch immer wieder gerne darauf weil es halt einfach sehr gut den Sachverhalt darstellt, gerade auch für Einsteiger.

                Freundliche Gruesse und einen geruhsamen Abdend,

                Thomas

                Ja danke, wünsch ich auch. Ich geh mal jetzt ne Runde Yoga machen dann wird der Abend richtig geruhsam ;-)

                Grüsse AndreD