리캡챠를 적용할 페이지는 login.php (.html이어도 적용 가능합니다.), 검증을 하는 페이지는 login_chk.php (php로 작성하였습니다.)로 가정을 하겠습니다.
1. 리캡챠 키를 생성
아래 링크에 접속합니다.
https://www.google.com/recaptcha/admin
Label 에는 그냥 이름 하나 적어줍니다. ex) login page
reCAPTCHA v3를 선택하고,
Domains에 사이트 도메인을 적어주고,
정책 동의에 체크한 후 register을 누릅니다.
Site key 와 Secret key는 기록해 둡니다.
2. 코드 삽입 (login.php)
login.php에서 <head></head> 태그 사이에 아래 코드를 삽입합니다.
<Site Key> 에 자신의 Site key를 입력합니다.
<script src='https://www.google.com/recaptcha/api.js?render=<Site key>'></script>
<script type="text/javascript">
grecaptcha.ready(function() {
grecaptcha.execute('<Site Key>', {action: 'loginpage'})
.then(function(token) {
document.getElementById('g-recaptcha-response').value = token;
});
});
</script>
login page 에서 로그인 <form> 태그안에 아래 코드를 삽입합니다.
<form name="login_form" method="post" action="./login_chk.php">
...(중략)....
<input type="hidden" id="g-recaptcha-response" name="g-recaptcha-response">
</form>
3. 코드 삽입 (login_chk.php)
php 코드 안에 아래 코드를 삽입합니다.
<Secret key> 안에 자신의 Secret key를 입력하면 됩니다.
//recaptcha
$captcha=$_POST['g-recaptcha-response'];
$secretKey = "<Secret key>";
$ip = $_SERVER['REMOTE_ADDR'];
$response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$secretKey."&response=".$captcha."&remoteip=".$ip);
$responseKeys = json_decode($response,true);
if($responseKeys["success"]) {
//통과한 경우의 코드를 작성
}
else {
//통과하지 못한 경우의 코드를 작성
}
//recaptcha
조건 if($responseKeys["success"]) 이 외에도 https://developers.google.com/recaptcha/docs/v3 문서의 Site Verify Response 부분을 참조하여 통과여부를 설정할 수 있습니다. 저는 간단히 success 부분만 받아 검증한 것입니다.
'Project > Programming' 카테고리의 다른 글
[PHP] 네이버 카페 글 파싱하기 (0) | 2019.12.27 |
---|---|
NYPC 2019 예선 문제 풀이 (2) | 2019.08.16 |
[Python] Python으로 카카오톡 봇 만들기 (3) - 반복적 동일 요청 막기 (도배 방지) (33) | 2018.04.05 |
[Python] Python으로 디스코드 봇 만들기 (4) - 맴버 관련 기능 추가하기 (5) | 2018.03.30 |
[Python] Python으로 카카오톡 봇 만들기 (2) - 급식 파서 활용하기 (14) | 2018.02.22 |