Dopo aver lottato per una mezza giornata, finalmente riesco a ottenere reCAPTCHA al lavoro convertendo questa funzione:Che cosa sta bloccando fsockopen?
function _recaptcha_http_post($host, $path, $data, $port = 80) {
$req = _recaptcha_qsencode ($data);
$http_request = "POST $path HTTP/1.0\r\n";
$http_request .= "Host: $host\r\n";
$http_request .= "Content-Type: application/x-www-form-urlencoded;\r\n";
$http_request .= "Content-Length: " . strlen($req) . "\r\n";
$http_request .= "User-Agent: reCAPTCHA/PHP\r\n";
$http_request .= "\r\n";
$http_request .= $req;
$response = "";
if(false == ($fs = @fsockopen($host, $port, $errno, $errstr, 10))) {
die ("Could not open socket");
}
fwrite($fs, $http_request);
while (!feof($fs))
$response .= fgets($fs, 1160); // One TCP-IP packet
fclose($fs);
$response = explode("\r\n\r\n", $response, 2);
return $response;
}
a:
function _recaptcha_http_post($host, $path, $data, $port = 80) {
$req = _recaptcha_qsencode ($data);
$request = curl_init("http://".$host.$path);
curl_setopt($request, CURLOPT_USERAGENT, "reCAPTCHA/PHP");
curl_setopt($request, CURLOPT_POST, true);
curl_setopt($request, CURLOPT_POSTFIELDS, $req);
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($request);
return $response;
}
Fondamentalmente, io sono interessato a scoprire perché curl
lavori mentre fsockopen
non riesce con "Impossibile aprire il socket". Grazie.
Inoltre: Supporto socket abilitato.
l'operatore stfu (@) errori di silenzio. Ciò rende molto difficile scoprire quale sia il problema. – goat
@chris, l'errore è "php_network_getaddresses: getaddrinfo non riuscito: nome o servizio sconosciuto". Qualsiasi aiuto? –
la mia ipotesi sarebbe il tuo valore di $ host non è corretto. vedere la documentazione per fsockopen() – goat