Heiko: Header senden mit POST-Variablen

Hallole,

vielleicht bin ich zu blond zum Gucken, vielleicht geht es auch nicht, anyway:

Ich möchte aus PHP einen Header senden, um eine andere Seite aufzurufen, also sowas wie

---
<?php header("location: http://www..."); ?>
---

Gibt es ein Möglichkeit dabei Daten zu übertragen, so wie das aus einem HTML-Formular heraus mit

---
<form acction=... method=post> heraus geschieht?
---

Ob es nun ausgerechnet mit "header();" geht ist mir dabei egal, ich möchte einfach den Effekt erreichen. POST möchte ich haben, weil es große Datenmengen sein könnten, die gesendet werden sollen, die den Rahmen von GET über die URL sprengen. Wichtig ist in jedem Fall, dass aus PHP raus die neue URL automatisch gesendet wird, ohne User-Aktion am Browser.

Gruß
Heiko

PS: Da ich keine @-Zeichen direkt in eine Email-Addi schreibe, packe ich so hier rein: K_Heiko&#64;gmx.de

  1. Hi,


    <?php header("location: http://www..."); ?>

    so einfach ist es leider nicht.
    Eine Methode wäre z.B. kurzfristige sessions zu verwenden um bestimmte Daten zu übertragen.

    Vielleicht geht es auch mit Javascript, so etwas wie ein Formular, dass sich auf ein bestimmtes Ereignis selbst abschickt.

    Ansonsten lassen sich POST-Daten nur mit fsockopen oder ähnlichem übertragen, ,aber das trifft deine Aufgabenstellung nicht, weil Du die anzeigbare Seite zurückbekommst. ABer DU willst ja einen redirekt und nicht gleich dort die Daten ausgeben. Nicht auszuschliessen, dass es trotzdem eine Möglichkeit gibt das Ganze irgendwie zu verbinden.

    Wenn Du etwas näher erläutern könntest, wo Daten herkommen und wo sie hinsollen, kann man vielleicht mehr sagen.

    ciao
    romy

    --
    DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
    sh:( fo:| ch:? rl:( br:& va:| zu:) ss:| ls:[
    Die Erklärung zum Selfcode findest du hier: http://emmanuel.dammerer.at/selfcode.html
    Einen Decoder für den Selfcode findest du hier: http://peter.in-berlin.de/projekte/selfcode
  2. Ich möchte aus PHP einen Header senden, um eine andere Seite aufzurufen, also sowas wie

    <?php header("location: http://www..."); ?>

    Gibt es ein Möglichkeit dabei Daten zu übertragen, so wie das aus einem HTML-Formular heraus mit

    Ob es nun ausgerechnet mit "header();" geht ist mir dabei egal, ich möchte einfach den Effekt erreichen. POST möchte ich haben, weil es große Datenmengen sein könnten, die gesendet werden sollen, die den Rahmen von GET über die URL sprengen. Wichtig ist in jedem Fall, dass aus PHP raus die neue URL automatisch gesendet wird, ohne User-Aktion am Browser.

    Möchtest Du, daß der Browser POST an einem anderen Server ausführt? Das wird nichts mit PHP direkt. Sende stattdessen per PHP ein passendes Formular mit den gewünschten Daten an den Browser und füge am Ende der Seite ein Javascript-form[].submit() ein. Anders geht's nicht.

    Falls Du Zugriff auf den anderen Server hast, solltest Du in jedem Fall versuchen, die Daten aus Deinem PHP-Skript direkt dorthin zu schicken, denn gerade bei den von Dir erwarteten Datenmassen ist es ratsam, die mindestens 100 MBit-Leitung zwischen den Servern zu verwenden, anstatt den ganzen Kram zusätzlich noch durch den möglicherweise nur 33.6 KBit fassenden Telefondraht zu quälen (Geschwindigkeitsfaktor ~3000).

    PS: Da ich keine @-Zeichen direkt in eine Email-Addi schreibe, packe ich so hier rein: K_Heiko&#64;gmx.de

    http://forum.de.selfhtml.org/archiv/2003/5/47094/ :)

    Gruß,
      soenk.e

  3. Hallo,

    danke für Eure Bemühungen, auch wenn es mir nicht hilft. Ich bin wohl doch zu blond zu gucken, sondern es schein nicht zu funktionieren. Ich weiss, ich suche die eierlegende Wollmilchsau, aber JavaScript darf auch nicht sein.

    Was schwebt mir vor:

    Auf Server A sei ein Script api.php

    Auf Server B liegt ein Script callapi.php, das macht z.b. folgendes:

    ============
    <?php
    if (!isset($callbackstate)) {

    header("location: http://A.api.php?function=readtext&
                        callbackscript=http://B.callapi.php&
                        callbackstate=showresult");
    }
    else {
      if ($callbackstate=="showresult") {
        echo $result; // was auch immer
      }
    }
    ?>

    api.php auf Server A macht:

    <?php
      switch($function) {
        case "readtext": $result=<Read something>;
        break;
    //  usw....
      }

    header("location: $callbackscript?callbackstate=$callbackstate&
                        result=$result;");
      // und an dieser Stelle wäre POST schön, weil $result sehr groß sein kann
    ?>

    Sinn und Zweck der Übung: Zugriffsmöglichkeiten mit anderen Scripten auf meinen Server aber nur per api.php, also kontrolliert, alles andere bleibt dicht. Da ich nicht wissen kann, von wo ein Zugriff erfolgt (ok ja, geht schon, sieht man ja an phpinfo()), kann ich noch weniger wissen, wie ich das Schreibzugriff bekommen sollte.

    Gruß
    Heiko

    PS: Abgesehen davon, dass das Coding oben nur eine soeben zusammengeworfene Prinzipdarstellung ist und durchaus Fehler drin sein mögen: Mit GET funktioniert dieses System.