Daten per $_POST an https senden

Divo1984

Erfahrenes Mitglied
Hallo liebe Community,

ich habe grade folgendes Problem. Ich betreibe eine Webseite, über die man (User) sich bei Fremdseiten anmelden kann! Dies ganze geschieht über folgende Funktion:

PHP:
function reg_it($wo, $genau, $womit) {
$temp_wo=explode("/",$wo);
$wo=$temp_wo[0];
if(count($temp_wo)>1)
{
$genau="/".$temp_wo[1]."".$genau;
}
  $wer=$_SERVER["SERVER_NAME"];
  $con = fsockopen($wo, 80);
  $handle = "POST $genau HTTP/1.1\r\n";
  $handle.= "Host: $wo\r\n";
  $handle.= "Referer: $wer\r\n";
  $handle.= "Content-type:application/x-www-form-urlencoded\r\n";
  $handle.= "Content-length: ". strlen($womit) ."\r\n";
  $handle.= "Connection: close\r\n\r\n";
  $handle.= $womit;
  fputs($con, $handle);
  while($con AND !feof($con)) {
      $res .= fgets($con, 128);
  }
  fclose($con);
  return $res;
}

nun möchte ich aber Daten an eine Seite, die mit https aufgerufen wird, mit $_POST senden! Hat da jmd. eine Ahnung wie ich das bewerkstelligen könnte?
 
Hast du hier schon mal die Suche verwendet? Da gibts dutzende Beispiele. Außerdem gibts in google einige prima Anleitungen:

http://davidwalsh.name/execute-http-post-php-curl

Wir helfen gern weiter, wenn du einen Fehler hast, ihn aber nicht finden kannst. Aber ein komplettes Beispiel, was dann auch noch per Copy&Paste funktioniert, verursacht einfach zu viel Aufwand ;-)

Notfalls postest du ne Anfrage im Jobs-Forum.


Sorry, aber ein bisschen Eigeninitiative musst du schon zeigen.
 
Hallo Divo,

wobei du für die Einstellung CURLOPT_POSTFIELDS auch ganz einfach ein Array verwenden kannst*:
PHP:
$post_data = array('param1' => 'val1', 'param2' => 'val2');

// ...
curl_setopt($curl_obj, CURLOPT_POSTFIELDS, $post_data);

Und mit folgenden 2 Zeilen kannst du evtl. SSL-Zertifikats-Fehler unterdrücken:
PHP:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);

Sicherheits-Lücke:
In dem Code auf der Seite, die saftmeister verlinkt hat, ist eine große Sicherheitslücke! Mittels [phpf]extract[/phpf] werden alle per POST übergebene Variablen in den globalen Raum geschrieben.

Dies ist ähnlich wie die bereits veraltete Einstellung Register Globals.



* Wobei dann der Content-Type-Header auf multipart/form-data gesetzt wird.
 
Naja, es ist genauso gefährlich, wie direkt die $_POST-Variablen zu übernehmen. Außerdem ging es mir eigentlich nur um den Teil mit curl() :-)

Aber es ist schon richtig, extract() sollte man nicht gedankenlos verwenden.

@ComFreek: Er kann den Code IMHO ohnehin nicht mittels Copy&Past übernehmen.
 
Zurück