1

あなたの助けが必要です!cURL を使用して投稿を送信しましたが、応答が空白です (boolean false)。ブラウザを押すだけのようにブラウザにデータを投稿するとhttps://www.example.com/myaccount/transfer.php?username=usernamer&password=pass&deposit=5、次の結果が表示されます。

1 0 success Your account has been deposited.

ブラウザーのソース コードを表示すると、結果は次のようになります。

<?xml version="1.0" encoding="utf-8"?>
<TransferResponse>
<version>1</version>
<result>0</result>
<resultstring>success</resultstring>
<description>Your account has been deposited</description>
</TransferResponse>

私のcURLコードを添付しましょう:

<?php

$config = array
(
"url"        => "https://www.example.com/myaccount/",
"transfer"   => "transfer.php",
"browser"    => "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16"
);

$postFields = "username=username&password=pass&deposit=5";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $config['url'] . $config['transfer']);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "/cert/GeoTrustGlobalCA.crt");
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_USERAGENT, $config['browser']);
curl_setopt($ch, CURLOPT_REFERER, $config['url']);
curl_setopt($ch, CURLOPT_HEADER, true);

$content = curl_exec($ch);

var_dump($content);
var_dump(curl_getinfo($ch));
curl_error($ch);

curl_close($ch);

echo $content;

?>

cURL で結果を取得するのを手伝ってください。私は多くの方法を試しました。私は 2 日間連続でインターネットをサーフィンしました。結局ここで質問することにしました。誰かが問題が何であるかを理解できますか? 以下が行われます。

  • コマンド ラインは、http (https ではなく)の結果をxml として表示します。
  • コマンド ラインは次の結果を返しますhttps (http ではない) : 失敗: エラー番号: 60。詳細: エラー: 14090086: SSL ルーチン: SSL3_GET_SERVER_CERTIFICATE: 証明書の検証に失敗しました
  • http (https ではない)の cURL 結果は、www.example.com の警告ページをリダイレクトするだけです
  • var_dump($content); and var_dump(curl_getinfo($ch));結果は次のとおりです。

    boolean false array (size=26) 'url' => string ' https://www.example.com/myaccount/transfer.php' (length=46) 'content_type' => null 'http_code' => int 0 'header_size' => int 0 'request_size' => int 0 'filetime' => int -1 'ssl_verify_result' => int 0 'redirect_count ' => int 0 'total_time' => float 1.451 'namelookup_time' => float 0 'connect_time' => float 0 'pretransfer_time' => float 0 'size_upload' => float 0 'size_download' => float 0 'speed_download' => float 0 'speed_upload' => float 0 'download_content_length' => float -1 'upload_content_length' => float -1 'starttransfer_time' => float 0 'redirect_time' => float 0 'certinfo' => 配列 (サイズ = 0) 空 'primary_ip' => 文字列 '177.70.43.10' (長さ = 11) 'primary_port' => int 443 'local_ip' => 文字列 '192.168.11.9' (長さ = 0) 'local_port' => int 0 'redirect_url' =>文字列 '' (長さ = 0)

4

2 に答える 2

1

これなら

SSL証明書の問題。CA証明書に問題がないことを確認してください。詳細:エラー:14090086:SSLルーチン:SSL3_GET_SERVER_CERTIFICATE:証明書の検証に失敗しました

あなたの問題、curl_setopt()設定です

CURLOPT_SSL_VERIFYPEER

あなたのためかもしれません:

FALSEは、cURLによるピアの証明書の検証を停止します。検証する代替証明書は、CURLOPT_CAINFOオプションを使用して指定するか、証明書ディレクトリーをCURLOPT_CAPATHオプションを使用して指定することができます。

だから設定

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

そしておそらくまた

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
于 2013-01-29T19:53:38.977 に答える
1

SSL 検証を false に設定すると、SSL の目的が無効になります。適切な解決策は、CURL の CA 証明書を設定することです。

解決策 1 (PHP.ini への変更):

  1. http://curl.haxx.se/docs/caextract.htmlから CA バンドル (cacert.pem) をダウンロードします。
  2. ローカル システムに配置します (例: C:\xampp\cacert.pem)。
  3. php.ini を開きます
  4. cacert.pem の場所を指すように curl.ca_info オプションを設定します。

    Example: curl.ca_info="C:\xampp\cacert.pem"
    
  5. アパッチを再起動する

解決策 2 (各 CURL 呼び出しの前にオプションを設定する)

  1. http://curl.haxx.se/docs/caextract.htmlから CA バンドル (cacert.pem) をダウンロードします。
  2. ローカル システムに配置します (例: C:\xampp\cacert.pem)。
  3. 次のコードを記述します。

    curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, TRUE); 
    curl_setopt ($ch, CURLOPT_CAINFO, "pathto\cacert.pem");
    

ソース: http://tumblr.wehavefaces.net/post/52114563111/environment-windows-xampp-curl-library

于 2013-06-04T04:00:31.450 に答える