자동 글쓰기 방지 구글 리캡차 V2 테스트 샘플
IP를 체크하는 방식으로 되어 있습니다. 이 부분에 있어서 IP가 변경되어 오는 클라이언트에 대한 부분을 별도 처리 하는 방식이 있는지는 필요할 경우 추가적으로 알아 봐야 할것으로 보입니다. 아래는 참고 사이트를 통해서 테스트 해본 샘플 입니다.
먼저 구글에 로그인 한 다음 아래 사이트에서 구글 리캡차 V2 키를 받아야 합니다.
받는 방법은 아래 참고 사이트를 보시면 됩니다.
https://www.google.com/recaptcha
<script>
function writeChk() {
var v = grecaptcha.getResponse();
if (v.length ==0) {
alert ("자동입력방지 기능 - '로봇이 아닙니다.'를 체크해주세요.");
return;
}
}
</script>
<label>자동입력 방지</label>
<form name="f" method="post" enctype="multipart/form-data" action="<?=$PHP_SELF?>" onsubmit="writeChk();">
<span id="captcha" class="g-recaptcha" data-sitekey="구글에서 받은 사이트키 입력 하는곳"></span>
<input value="작성완료" type="submit">
</form>
아래는 서버 쪽에서 받아서 처리 하는 곳입니다.
if ( $_POST['g-recaptcha-response'] )
{
$captcha = $_POST['g-recaptcha-response'];
$secretKey = '비밀키 입력 하는곳';
// 프록시 서버 사용하는 방식이면 이곳 변경해줘야 한다. 로드밸런스 또는 CDN 사용시 서버의 IP가 들어올 경우.
$ip = $_SERVER['REMOTE_ADDR'];
$data = array(
'secret' => $secretKey,
'response' => $captcha,
'remoteip' => $ip
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$response = curl_exec($ch);
curl_close($ch);
$responseKeys = json_decode($response, true);
if ($responseKeys["success"]) {
echo date('Y-m-d H:i:s ') . "[성공] 통과";
} else {
echo date('Y-m-d H:i:s ') . "통과 실패";
}
exit;
}
단순 이미지만 필요 하다면 아래를 참고하세요.
자동글쓰기 방지 이미지 만들기 - 캡차 > PHP (pabburi.co.kr)
* 캡차 참고한것
사실상 그대로 복사하여 잘 되는지 확인한 곳.