Daten per $_POST an https senden

So ich habe mich jetzt mal dran gesetzt - folgendes kam dabei raus:

PHP:
<?php
$data = "t:formdata=H4sIAAAAAAAAAJWPMU7DQBBFh0hGoHRI3AAEBFhTEAqo0iAhRQjJ4gBre2IW2d5lZoJNw1E4AeISKei4AwegpaLAdhREZ235v/6b/+f1C4LqGA4JM8NCWowtw6syxfr8v3VypmaGWEpdIBOMLWVKO53coRLtsIk9jVViCXMTq1gzqkncsolcGszTnQhl7nZvF8PP7fefAaxNYZjYUsjm181Fga3pvX7UYa7LLIyETJld1E5gsyttI/4bJ74bb8gmyBzN48IwNwcXb+np7PvlYwBQu2oE+/0DMmxc4gd4BhBYX0oftCWD6gD2+gEstMlXVUGnPMBl0RGM+vNOM1eW0lXXxsrwwz1eE6SC/17rlAfYFf0C3t0t9tkCAAA=&firstName=Jan&gender=M&email=admin@morecash4mail.de&password=Benita08&terms=checked&REF=fVqCcazP3N5eg3q";
$tuCurl = curl_init();
curl_setopt($tuCurl, CURLOPT_URL, "https://www.euroclix.de/registration/index.registration06.registrationform");
curl_setopt($tuCurl, CURLOPT_PORT , 443);
curl_setopt($tuCurl, CURLOPT_VERBOSE, 0);
curl_setopt($tuCurl, CURLOPT_HEADER, 0);
curl_setopt($tuCurl, CURLOPT_SSLVERSION, 3);
curl_setopt($tuCurl, CURLOPT_POST, 1);
curl_setopt($tuCurl, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($tuCurl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($tuCurl, CURLOPT_POSTFIELDS, $data);
curl_setopt($tuCurl, CURLOPT_HTTPHEADER, array("Content-Type: html/text"));

$tuData = curl_exec($tuCurl);
if(!curl_errno($tuCurl)){
  $info = curl_getinfo($tuCurl);
  echo 'Took ' . $info['total_time'] . ' seconds to send a request to ' . $info['url'];
} else {
  echo 'Curl error: ' . curl_error($tuCurl);
}

curl_close($tuCurl);
echo $tuData;
?>

Dazu ne Frage: Wie kann ich mir da die Haeder ausgeben lassen?

Die Variablen für die zu postenden Daten habe ich von der Startseite: http://www.euroclix.de

Kann es sein, dass dort durch das t:formdata Tapestry automatische Eingebaen verhindert werden?
 
Dafür gibt es die Option CURLOPT_HEADER, welche du auf 0 gestellt hast:
PHP:
curl_setopt($tuCurl, CURLOPT_HEADER, 0);
Die musst du auf 1 stellen:
PHP:
curl_setopt($tuCurl, CURLOPT_HEADER, 1);
 
Nun bin ich bei foolgender Ausgabe im Header
STATUS-CODE: 500 X-Tapestry-ErrorMessage: Forms require that the request method be POST and that the t:formdata query parameter have values.

stelle ich nun auf multipart/formdata kommt das - ich werd noch kirre

STATUS-CODE: 500 X-Tapestry-ErrorMessage: Unable to decode multipart encoded request.
 
klappt auch net:(

PHP:
<?php
$data = "t:formdata=H4sIAAAAAAAAAJWPMU7DQBBFh0hGoHRI3AAEBFhTEAqo0iAhRQjJ4gBre2IW2d5lZoJNw1E4AeISKei4AwegpaLAdhREZ235v/6b/+f1C4LqGA4JM8NCWowtw6syxfr8v3VypmaGWEpdIBOMLWVKO53coRLtsIk9jVViCXMTq1gzqkncsolcGszTnQhl7nZvF8PP7fefAaxNYZjYUsjm181Fga3pvX7UYa7LLIyETJld1E5gsyttI/4bJ74bb8gmyBzN48IwNwcXb+np7PvlYwBQu2oE+/0DMmxc4gd4BhBYX0oftCWD6gD2+gEstMlXVUGnPMBl0RGM+vNOM1eW0lXXxsrwwz1eE6SC/17rlAfYFf0C3t0t9tkCAAA=&firstName=Jan&gender=M&email=admin@morecash4mail.de&password=Benita08&terms=checked&REF=fVqCcazP3N5eg3q";
$data=urlencode($data);
$tuCurl = curl_init();
curl_setopt($tuCurl, CURLOPT_URL, "https://www.euroclix.de/registration/index.registration10.registrationform");
curl_setopt($tuCurl, CURLOPT_PORT , 443);
curl_setopt($tuCurl, CURLOPT_VERBOSE, 0);
curl_setopt($tuCurl, CURLOPT_HEADER, 1);
curl_setopt($tuCurl, CURLOPT_SSLVERSION, 3);
curl_setopt($tuCurl, CURLOPT_POST, 1);
curl_setopt($tuCurl, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($tuCurl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($tuCurl, CURLOPT_POSTFIELDS, $data);
curl_setopt($tuCurl, CURLOPT_HTTPHEADER, array("Content-Type: multipart/formdata;"));

$tuData = curl_exec($tuCurl);
if(!curl_errno($tuCurl)){
  $info = curl_getinfo($tuCurl);
  echo 'Took ' . $info['total_time'] . ' seconds to send a request to ' . $info['url'];
} else {
  echo 'Curl error: ' . curl_error($tuCurl);
}

curl_close($tuCurl);
echo $tuData;
?>

STATUS-CODE: 500 X-Tapestry-ErrorMessage: Unable to decode multipart encoded request

bei html/text

STATUS-CODE: 500 X-Tapestry-ErrorMessage: Forms require that the request method be POST and that the t:formdata query parameter have values.

hat sich also nichts verändert:(
 
Ich könnte mir noch vorstellen, das der Tomcat oder welcher Webserver da auch immer läuft, die Header-Angaben wie User-Agent und dergleichen vermisst.
 
Server: Apache-Coyote/1.1
p3p: CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"
Set-Cookie: JSESSIONID=20BF1A301CDB2CE56DB2039F8850C34E; Path=/; Secure


Das Dingens nutzt auch t:formdata tapestry - kann es sein - das dieses automatisches Ausfüllen von Formularen unterbindet?
 
Der Webserver bzw. die dahinterliegende Applikation kann nur das erwarten, was auch ein Browser senden würde. Wenn du einen Browser simulierst, sollte die Applikation keinen Unterschied festellen können. Ich denke mal, das du nicht alle Angaben sendest, die ein Browser senden würde, wenn man in ihm das Formular absendet. Du kannst versuchen, herauszufinden, was dein Browser alles sendet, und das 1:1 nach bauen. Dabei hilft dir ein z.B. ein Firefox-Plugin wie Firebug oder Live HTTP Headers.
 
Zurück