Markus: POST + Location-Switch (Header/Curl)

Beitrag lesen

Hallo zusammen,

gleich zum Problem - Ich möchte in einem Skript einen POST Request an einen externen Host senden. Dabei sollte entsprechend das Skript bzw. der Browser auch zur im POST angegebenen URL wechseln (wie bei einem GET Request - header("Location: http://www.example.com/");).

Das Problem habe ich bisher versucht mit den Funktionen header() oder den curl-Funktionen zu lösen. Beide Versuche liefern jedoch nicht das gewünschte Ergebnis.

Beim ersten Versuch mittels header() werden die Daten ($request) nicht gesendet, beim zweiten Versuch mittels curl-Funktionen wird der Location-Switch nicht ausgeführt.

Hat jemand einen Rat für mich?

Vorab Vielen Dank für Eure Unterstützung!

Beste Grüße,
Markus

/*
 * Versuch 1: POST mittels header()
 */

$request = "&var1=123&var2=456&var3=789";

$headers[] = "POST /script.php HTTP/1.1\r\n";
$headers[] = "Host: http://www.example.com\r\n";
$headers[] = "Content-Type: application/x-www-form-urlencoded\r\n";
$headers[] = "Content-Length: " . strlen($request) . "\r\n";
$headers[] = $request . "\r\n\r\n";

foreach($headers as $header) {
  header($header);
}

/*
 * Versuch 2: POST mittels curl
 */

$request['var1'] = '123';
$request['var2'] = '456';
$request['var3'] = '789';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/script.php');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Location: http://www.example.com/script.php'));
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
curl_exec($ch);
curl_close($ch);