ご注意:!あなたがのために特別にコンテキストオプションを設定し、file_get_contents
関数呼び出しに追加のパラメータを指定する必要がありますg-recaptcha-respone
を= g-recaptcha-response
GoogleのreCatchaのAPI SSL(サイトにSSLがある場合)。少なくともUbuntuで
// if submitted check response
if ($_POST["g-recaptcha-response"]) {
$secret = 'SECRET_KEY';
$response = $_POST['g-recaptcha-response'];
$remoteip = $_SERVER['REMOTE_ADDR'];
$url = "https://www.google.com/recaptcha/api/siteverify";
$post_data = http_build_query(
array(
'secret' => $secret,
'response' => $response,
'remoteip' => $remoteip
)
);
$options=array(
// If site has SSL then
'ssl'=>array(
// In my case its /etc/ssl/certs/cacert.pem
'cafile' => '/path/to/cacert.pem',
'verify_peer' => true,
'verify_peer_name' => true,
),
'http' =>
array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $post_data
)
);
$context = stream_context_create($options);
$result_json = file_get_contents($url, false, $context)
$resulting = json_decode($result_json, true);
if($resulting['success']) {
//Success
}
}else
{
// action for no response
}
- サイトはSSL
cd /usr/local/share/ca-certificates
sudo curl http://curl.haxx.se/ca/cacert.pem -o cacert.crt
sudo update-ca-certificates
sudo update-ca-certificates –fresh
を持っており、あなたのcafileとパスが(私は2つの追加のパラメータを追加する必要が私の場合は
capath=/etc/ssl/certs/
cafile=/etc/ssl/certs/cacert.pem
私は自分のウェブサイトにSSLを持っていないので、$ options = arrayに入れるのは何ですか?または$文脈に? – Forlis
@Forlis:私の更新を見て、 's'が足りませんか? 'g-recaptcha-response'の –
はい、それは仕事です。多くのTy! – Forlis