HTTPSページのウェブサイトからHTTPSページの別のウェブサイトに暗号化された変数を送信しようとしています。これを達成するために使用しているコードはHTTPからのウェブサイト間でのデータの送信とHTTPSでの受信
です$VARIABLE = 'myvariable';
function do_post_request($url, $data, $optional_headers = null)
{
$params = array('http' => array(
'method' => 'POST',
'content' => $data
));
if ($optional_headers !== null) {
$params['http']['header'] = $optional_headers;
}
$ctx = stream_context_create($params);
$fp = @fopen($url, 'rb', false, $ctx);
if (!$fp) {
throw new Exception("Problem with $url, $php_errormsg");
}
$response = @stream_get_contents($fp);
if ($response === false) {
throw new Exception("Problem reading data from $url, $php_errormsg");
}
return $response;
}
do_post_request('https://localhost/myphpfile.php', $VARIABLE);
これはHTTPには適していますが、HTTPSでは機能しませんが、私はWAMPを実行しているローカルサーバー上で接続が拒否されるためだと思います。
とにかく私の質問は、データを渡すために 'myphpfile'に何が必要なのですか?
ありがとうございます!
更新日:すごい、すべての素人回答に感謝します!
$url = 'https://localhost/myphpfile.php';
// Initialize session and set URL.
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
// Set so curl_exec returns the result instead of outputting it.
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
// Get the response and close the channel.
$response = curl_exec($ch);
curl_close($ch);
私はVERIFYHOSTパラメータは、それが有効な証明書をチェックしていない原因になっている知っているが、私は、私は思う:あなたの多くと同じように、私はただのcURLを簡単に見取り、これをGoogleに転がっ見つけた提案私はテストサーバーを離れてから、私は1つを取得しますが、あなたは私が 'myphpfile'に送信されているデータを取得することができます教えていただけますか?
これはApacheですか?もしそうなら、 'mod_ssl'モジュールもロードされていますか? –
@Khôi:WAMP - Windows Apache MySQL PHP。しかし、私は単純なcURL呼び出しを行うのではなく、なぜaskerが 'stream_get_contents()'を使用しているのか、さらに詳しく知りたいと思っています。また、 'https:// localhost/myphpfile.php'を参照するだけですか?あなたのブラウザでうまく動作しない場合、あなたのコードでは動作しません。 – Crontab
カールを使用していない理由がありますか? –