Comment puis-je utiliser le SSL dans fsockopen?
Je suis en cours d'exécution PHP 5.2.6 sur Windows, j'ai extension=php_curl.dll
et extension=php_openssl.dll
décommenté dans php.ini; en tant que tel, je peux voir la suite dans phpinfo
:
curl
cURL support enabled
cURL Information libcurl/7.16.0 OpenSSL/0.9.8g zlib/1.2.3
openssl
OpenSSL support enabled
OpenSSL Version OpenSSL 0.9.8g 19 Oct 2007
Je ne suis pas sûr que le fait d'avoir cURL est activé est vital pour cela, mais depuis qu'il a mentionné OpenSSL j'ai pensé que je pourrais l'inclure ici de toute façon pour l'exhaustivité.
Ce que je veux faire est simple: faire une requête POST vers un autre serveur via le protocole SSL à l'aide de fsockopen
.
Mon code jusqu'à présent est: est-ce
$host = 'www.redacted.com';
$data = 'user=redacted&pass=redacted&action=redacted';
$response = "";
if ( $fp = fsockopen("ssl:{$host}", 443, $errno, $errstr, 30) ) {
$msg = 'POST /wsAPI.php HTTP/1.1' . "\r\n";
$msg .= 'Content-Type: application/x-www-form-urlencoded' . "\r\n";
$msg .= 'Content-Length: ' . strlen($data) . "\r\n";
$msg .= 'Host: ' . $host . "\r\n";
$msg .= 'Connection: close' . "\r\n\r\n";
$msg .= $data;
if ( fwrite($fp, $msg) ) {
while ( !feof($fp) ) {
$response .= fgets($fp, 1024);
}
}
fclose($fp);
} else {
$response = false;
}
Cela fonctionne bien sûr, si je viens de passer en $host
et utiliser le port 80. Mais j'ai vraiment besoin d'envoyer ce sur SSL, et maintenant ça ne fonctionne pas. $response
obtient mis à false
$errno
reste à 0
et $errstr
obtient mis à php_network_getaddresses: getaddrinfo failed: No such host is known.
. Je sais que ce n'est pas un problème du serveur vers le bas, ou une faute de frappe dans le nom d'hôte, etc., parce qu'il fonctionne si je vais sur le port 80 unsecurely. Les problèmes ne démarre que lorsque j'essaie de passer en SSL.
Que dois-je faire pour obtenir ce travail?
source d'informationauteur SoaperGEM
Vous devez vous connecter pour publier un commentaire.
Cela peut paraître évident, mais avez-vous essayé cette place?
Je ne suis pas sûr si le
//
est nécessaire ou non, mais lessl
ettls
exemples sur le PHP Internet page transport ont.P. S. j'ai aussi une "chose" sur les variables incluses dans les chaînes, dans le cas où vous vous demandez pourquoi on utilise la concaténation de chaîne maintenant.