Daten von einem script an das andere übergeben

Sprint

Erfahrenes Mitglied
Hallo zusammen,

ich befürchte, daß ich einfach nur gewaltig auf dem Schlauch stehe, komme aber im Moment nicht runter.

Es geht um eine Dienstleistung, die die Kunden zum einen per Paypal, zum anderen per Prepaid bezahlen können. Die Paypal Zahlung funktioniert einwandfrei.

Bei der anderen Zahlung bestätigt der User mit Klick auf einen Button die Zahlung. Das wird von einem Formular an ein PHP Script geschickt, das die Daten überprüft, ein paar DB Einträge produziert. Immer noch alles gut.

Wenn genügend Guthaben da ist, soll das Script an das selbe Script weiterleiten, das auch als Endpunkt von Paypal verwendet wird, wo also für den User die Bezahlung bestätigt wird und ein paar PDF angezeigt werden. Und genau bei dieser Weiterleitung hakt es.

Am einfachsten wäre es ja per header("Location: ..."), aber da kann ich nur per GET Werte übergeben. Das andere Script erwartet aber POST Daten und ich möchte auch die Anzeige der Daten in der URL vermeiden.

Ich habe mir jetzt dieses Datenübergabe zusammengebaut, die zwar angeblich die Daten versendet, nur kommt beim Empfänger scheinbar nichts an und es wird auf dem Client auch nicht angezeigt.

PHP:
function PostToHost($host, $path, $referer, $data_to_send) {
    $fp = fsockopen($host, 80);
    fputs($fp, "POST $path HTTP/1.1\r\n");
    fputs($fp, "Host: $host\r\n");
    fputs($fp, "Referer: $referer\r\n");
    fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
    fputs($fp, "Content-length: ". strlen($data_to_send) ."\r\n");
    fputs($fp, "Connection: close\r\n\r\n");
    fputs($fp, $data_to_send);
    while(!feof($fp)) {
        $res .= fgets($fp, 128);
    }
    fclose($fp);
    return $res;
}

$data = 'custom='.$customdata.'&item_name='.$leistung;
$x = PostToHost(
    "www.domain.de",
    "/gbkv/payment-successful.php",
    "https://www.domain.de/gbkv/payprepay.php",
    $data
);

Lasse ich mir anschließend $x anzeigen, bekomme ich diese Meldung:

"HTTP/1.1 301 Moved Permanently Date: Mon, 20 Nov 2017 11:26:33 GMT Server: Apache Location: http://domain.de/gbkv/payment-successful.php Content-Length: 0 Content-Type: text/html; charset=UTF-8 X-Varnish: 608760967 Age: 0 Via: 1.1 varnish-v4 X-redirector: MTk4MzEyMjYK Connection: close"

Allein das Content-Length: 0 ist schon komisch, da die zu sendenden Daten definitiv in der Funktion ankommen????

Ich hoffe, mir kann hier jemand auf die Sprünge helfen. Vielen Dank schon mal im Voraus, Sprint
 
Hallo Sprint,

an deiner Stelle würde ich das Script für die Paypal-Verarbeitung so anpassen, dass du diese Funktion entweder über Postdaten oder über Parameter antriggern kannst.

Ansonsten müsste sowas eigentlich funktionieren:
PHP:
$url = 'URL';
$data = array('field1' => 'value', 'field2' => 'value');
$options = array(
        'http' => array(
        'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
        'method'  => 'POST',
        'content' => http_build_query($data),
    )
);

$context  = stream_context_create($options);
$result = file_get_contents($url, false, $context);
 
Hallo Kalito,

mit deinem Version hat es funktioniert, habe aber dann doch deinen Rat angenommen, das Empfangsscript zu ändern. Ich bekomme sonst keine Bildschirmausgabe. Vielen Dank für deine Hilfe.
 
Zurück