我想在我的網站上實現新版本的驗證碼。谷歌沒有驗證碼和PHP
我做了這麼遠:
echo '<div class="g-recaptcha" data-sitekey="XXXXXXXXXXXXXXXXXXXXXXXXXXXX"></div>';
內PHP:
$recaptcha = $_POST['g-recaptcha-response'];
if(!empty($recaptcha))
{
$google_url = "https://www.google.com/recaptcha/api/siteverify";
$secret = 'YYYYYYYYYYYYYYYYYYYYYYYYYYY';
$ip = $_SERVER['REMOTE_ADDR'];
$url = $google_url."?secret=".$secret."&response=".$recaptcha."&remoteip=".$ip;
$res = getCurlData($url);
$res = json_decode($res, true);
if($res['success'] == 'false')
{
$captcha_error = "Please re-enter your reCAPTCHA.";
}
}
的getCurlData功能:
function getCurlData($url)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.16) Gecko/20110319 Firefox/3.6.16");
$curlData = curl_exec($curl);
curl_close($curl);
return $curlData;
}
我想什麼
表單內達到是區分何時不檢查驗證碼盒。如果他/她沒有選中該框,我想向用戶拋出一個錯誤。
到目前爲止,如果Google的回覆是「我們不確定您是否是人類,請繼續進行我們的第二級驗證」,那麼我只會拋出一個錯誤[if($ res ['success'] =='false 「)]。
PS:大部分代碼是由Srinivas Tamada編寫的。你可以找到它here。
在此先感謝。