保護網站表單免受垃圾郵件和機器人攻擊是 Web 開發的基本功課。Google reCAPTCHA 作為業界標準的驗證服務,能有效區分真人用戶與自動化腳本。本文將詳細說明如何在 PHP 架構的網站中完整整合 reCAPTCHA v1(舊版),涵蓋註冊流程、前端嵌入、後端驗證與必要檔案部署。
前往 Google reCAPTCHA 管理後台 登記您的網域,即可取得一組 Public Key(前端顯示用)與 Private Key(後端驗證用)。妥善保管這兩組金鑰,切勿公開 Private Key。
在表單所在的模板檔(例如 report.php)的適當位置插入以下程式碼,將驗證碼圖片與輸入框渲染到頁面:
<tr>
<td height="23">Captcha</td>
<td height="23">
<?php
require_once('../../../skin/google/recaptchalib.php');
$publickey = "您的 Public Key";
echo recaptcha_get_html($publickey);
?>
</td>
</tr>
確認 recaptchalib.php 的相對路徑正確,否則會發生 require_once 失敗。
表單送出的目標頁面(如 e/enews/index.php)頂端加入驗證邏輯:
<?php
require_once('../../skin/google/recaptchalib.php');
$privatekey = "您的 Private Key";
$resp = recaptcha_check_answer(
$privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]
);
if (!$resp->is_valid) {
die("Incorrect!!<a href='#' onClick='javascript:history.back(-1);'>Click here to back!</a>" .
"(reCAPTCHA said: " . $resp->error . ")");
}
?>
驗證失敗時會直接終止腳本並提示錯誤訊息,開發者可依需求改為導向錯誤頁或 AJAX 回傳 JSON 格式錯誤碼。
從 Google 官方下載 recaptchalib.php,放置於程式碼中 require_once 指定的目錄(範例為 skin/google/)。完成後測試表單送出,確認驗證碼正常顯示且驗證邏輯運作無誤。
上線後持續監控驗證通過率與誤攔截情況。若發現真人用戶頻繁被誤判,可考慮調整風險分析閾值或升級至 reCAPTCHA v2/v3(需重寫整合程式碼)。定期檢查 Google 官方公告,確保使用的 API 版本仍受支援。