以PHP實作Google reCAPTCHA驗證,在前一篇有提到 Google reCAPTCHA 我不是機器人申請教學
在取得金鑰與密鑰後我們來實作驗證的部分。
Html
<form method="post">
<input type="text" name="act" required placeholder="帳號">
<input type="password" name="pwd" required placeholder="密碼">
<!-- Google reCAPTCHA -->
<div class="g-recaptcha" data-sitekey="這裡輸入Google reCAPTCHA 網站金鑰"></div>
<input type="submit" value="送出">
</form>
<script type="text/javascript" src='https://www.google.com/recaptcha/api.js'></script>
PHP部分我們省略對於帳號密碼的驗證,以下是對於reCAPTCHA的驗證function
function check() {
// Google reCAPTCHA 網站密鑰
$data['secret'] = '這裡輸入Google reCAPTCHA 網站密鑰';
$data['response'] = $_POST['g-recaptcha-response'];
$ch = curl_init();
// 使用CURL驗證
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, 'https://www.google.com/recaptcha/api/siteverify');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$result = curl_exec($ch);
curl_close($ch);
// 解密
$result = json_decode($result, true);
// 檢查是否通過驗證
if ( ! isset($result['success']) || ! $result['success']) {
// 驗證失敗
return false;
} else {
// 驗證成功
return true;
}
}
在做多國語系網站時,如果需要指定reCAPTCHA顯示的語言,以顯示英文為例可以使用以下方式:
<script type="text/javascript" src='https://www.google.com/recaptcha/api.js?hl=en'></script>
使用精簡的 HTML 程式碼 (包含任何內嵌 JavaScript 和其中所含的 CSS) 可以大幅減少資料量,同時加快下載及剖析的速度。
Git版本控管如何以手動方式部署到Centos伺服器呢
Laravel 部署時發生Error
reCAPTCHA是目前針對防範機器人最為有效的方式,廣泛使用在各政府機關、民間網站的網頁設計中,此篇文章教學申請取得金鑰步驟。
RC4加密在密鑰的生成演算中存在漏洞在 Acunetix 弱點掃描中被列為中度風險,以Apache實作關閉RC4加密方式