Sönke Tesch: Mit Header("Location: ") Daten per Post übermitteln

Beitrag lesen

Ist es möglich die Daten mit post zu übermitteln so das sie nicht sichtbar sind in dere Adresszeile.

Den normalen Header würde ich so schreiben:
  Header("Location: seite.php?variable=$Inhalt");

Du bist da ein wenig auf dem falschen Dampfer. Was Du mit Location: machst, ist dem Browser auf _seine_ Anfrage an _Dich_ bzw. Dein Skript zu antworten, er möge doch bitte lieber die genannte Adresse benutzen.
Im Kern ist das also eigentlich keine Datenübermittlungseinrichtung, sondern eine Weiterleitung oder Vermittlung. header() ist nur für die Antwortschiene Webserver -> Webbrowser gedacht.

POST wird hingegen in einer ganz anderen Ecke genutzt. POST ist die Anfrage bzw. der Befehl, den der Webbrowser an einen Server richtet. POST ist gewissermaßen der Bruder von GET. GET wird ebenfalls als Befehl an einen Webserver gesendet, und zwar um Seiten abzuholen ohne Daten zu übermitteln.
POST, GET und Co. gehen also in die Gegenrichtung, Browser -> Server.

Wenn Du per POST Daten übermitteln willst, dann musst Du dementsprechend schon selber in Deinem Skript eine Anfrage an den betreffenden Zielserver machen; Dein Skript muß sich quasi in die Rolle eines Webbrowsers begeben. Wie das geht, wird auf der von Lulu angegebenen Seite demonstriert. Schau Dir das Skript nochmal an:

$fp = fsockopen($host,80);

Netzwerkverbindung zu $host öffnen, Port 80 (der Port, an dem Webserver normalerweise auf Anfragen warten).

fputs($fp, "POST $path HTTP/1.1\n");

Hier gibt das Skript den Befehl POST an den Webserver.

fputs($fp, "$data_to_send\n");

Hier werden die Daten an den Webserver gesendet.

while(!feof($fp)) {
      $res .= fgets($fp, 128);
  }

Und hier wird schließlich die Antwort des Webservers empfangen. Das wäre auch der Zeitpunkt, an dem auf Seite des anderen Webservers (also _nicht_ in _diesem_ Skript) zum Beispiel der header()-Befehl benutzt werden könnte, um diesem Skript zu antworten.

Kurzum:
Es ist nicht möglich, daß Dein Skript einem Webbrowser antwortet, "Sende diese Daten mittels POST an Server Y". Es kann nur mittels der von Dir oben schon genutzten Weiterleitung antworten "Versuche die Anfrage, die Du gerade an mich gestellt hast, statt an mich an Server Y zu stellen".

Aber wenn Du mal genauer schilderst, was Du mit der Aktion vorhast, gibt es vielleicht eine andere Lösung.

Gruß,
  soenk.e