https Request über PHP
Gerhard Knabe
- php
Ich möchte einen Request über https verschicken und die Antwort auswerten. Bei http würde das ja etwa so aussehen:
<?php
$fp=fsockopen("domain.de", 80, $errno, $errstring);
fwrite($fp, "GET / HTTP/1.1\r\n"
. "Host: domain.de \r\n\r\n");
$result = fgets($fp,200);
fclose($fp);
echo "$result $errno $errstring";
?>
Was muß ich tun, damit ich das über eine https-Verbindung machen kann? Vermutlich muß ich einige Funktionen des OpenSSL Moduls benutzen, nur welche? Und wie? Oder kann ich irgendwie eine http Verbindung über SSL aufmachen, was die Sache ja bedeutend einfacher machen würde?
Schonmal Danke für die Hilfe
GK
Hi!
Was muß ich tun, damit ich das über eine https-Verbindung machen kann?
Wenn Du PHP 4.3 und das openSSL Modul hast dann einfach so wie es im Manual(en) steht: http://www.php.net/manual/en/function.fsockopen.php
Sonst wirds sehr kompliziert, direktmit openSSL, das habe ich auch noch nicht gemacht. Es gibt aber noch http://www.php.net/manual/de/ref.curl.php und auch das Komandozeilentool curl, damit habe ich es mal gemacht.
Grüße
Andreas
Danke. Leider steht mir nur PHP 4.1.1 zur Verfügung, so daß ich das nicht über fsockopen machen kann. Ich hab's dann über die curl Funktionen versucht. Mit http funktioniert das auch:
<?php
$ch = curl_init ("http://domain.de");
$fp = fopen ($HTTP_SERVER_VARS["DOCUMENT_ROOT"] . "/_private/test.txt", "w");
curl_setopt ($ch, CURLOPT_FILE, $fp);
curl_setopt ($ch, CURLOPT_STDERR, $fp);
curl_setopt ($ch, CURLOPT_HEADER, 1);
curl_setopt ($ch, CURLOPT_VERBOSE, 1);
curl_exec ($ch);
curl_close ($ch);
fclose ($fp);
readfile($HTTP_SERVER_VARS["DOCUMENT_ROOT"] . "/_private/test.txt");
unlink($HTTP_SERVER_VARS["DOCUMENT_ROOT"] . "/_private/test.txt");
?>
Sobald ich aber das http durch https ersetze tut's das nicht mehr. Ich krieg dann nur die Meldung "* Closing connection #0". Ich habe auch versucht, die SSL Version manuell zu setzen, aber ohne Erfolg. Oder muss ich noch irgendwelche anderen Optionen setzen? Ich find's ein bischen kryptisch.
MfG
GK
Hi!
Sobald ich aber das http durch https ersetze tut's das nicht mehr. Ich krieg dann nur die Meldung "* Closing connection #0". Ich habe auch versucht, die SSL Version manuell zu setzen, aber ohne Erfolg. Oder muss ich noch irgendwelche anderen Optionen setzen?
Keine Ahnung, ich habe es nicht über die PHP-Funktionen gemacht, sondern über das Kommandozeilentool über exec("curl https://...")
Das lief prima, wird auh oft empfohlen bei problemen, dazu muss das Tool nur vorhanden sein, mit SSL-Support. Sieht ein bischen so aus als sei Curl ohne SSL-Support bei Dir.
Gucke mal bei google, da findest Du ne Menge zu dem Thema:
http://www.google.de/search?q=php+curl+https
unter anderem auch das Curl Forum/Liste, zur Not wende dich an die die das Programmiert haben.
Grüße
Andreas