[PHP] 구글 캡차(Captcha) 달기 - V3, V2 버전

구글의 캡차를 달아보자 

최근 구글에는 reCaptcha V2 와 V3가 있는데, V3이 더욱 간소화되었다.

 

[ reCaptcha V2 ]

 

img.png

일단 구글 캡차 콘솔 어드민으로 간다.

www.google.com/recaptcha

img.png

 

그런다음 다음 화면과 같이 새캡차 사이트를 만든다.

img.png

 

그리고, 사이트키와 비밀키를 따로 확인해둔다.

 

img.png

1. write.html  페이지

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
 
<label>자동입력 방지</label>
<span id="captcha" class="g-recaptcha" data-sitekey="사이트키값"></span>
 
<input value="작성완료" type="button" onClick="writeChk();">
 
<script>
function writeChk() {
    var v = grecaptcha.getResponse();
    if (v.length ==0) {
        alert ("자동입력방지 기능 - '로봇이 아닙니다.'를 체크해주세요.");
        return;
    }
}
</script>
cs

 

 

2. write_ok.php 페이지

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?
session_start();
 
$captcha = $_POST['g-recaptcha-response'];
$secretKey = '비밀키'; 
$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 "[성공] 통과";
 
} else {
  echo "통과 실패";
}
?>
cs

 

 

 

 

[ reCaptcha V3 ]

 

클릭도 필요없다. 자동체킹한다. 

화면 우측하단에 표시된다.

 

img.png

 

 

 

일단 구글 캡차 콘솔 어드민으로 간다.

www.google.com/recaptcha

 

그리고, 마찬가지로 새캡차 사이트를 만든다.

img.png

 

1. write.html  페이지

1
2
3
4
5
6
7
8
9
10
11
12
13
 
<form name="f" method="post" enctype="multipart/form-data" action="write_ok.php">
    <input type="hidden" id="g-recaptcha" name="g-recaptcha">
</form>
 
<script>
grecaptcha.ready(function() {
  grecaptcha.execute('6Le9nqkaAAAAAGHmohgRWqCZeIlo_ndZI1HwpHfh', {action: 'homepage'}).then(function(token) {
 
    document.getElementById('g-recaptcha').value = token;
  });
});
cs

 

 

2. write_ok.php 페이지

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?
session_start();
 
$captcha = $_POST['g-recaptcha'];
$secretKey = '비밀키'; 
$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 "[성공] 통과";
} else {
  echo "통과 실패";
}
 
?>
cs

 

0
0
이 글을 페이스북으로 퍼가기 이 글을 트위터로 퍼가기 이 글을 카카오스토리로 퍼가기 이 글을 밴드로 퍼가기

PHP

번호 제목 글쓴이 날짜 조회수
17 [PHP] 구글 캡차(Captcha) 달기 - V3, V2 버전 관리자 12-12 23
16 PhpSpreadsheet 설정 샘플 코드 관리자 06-21 255
15 PHP & JavaScript 엑셀 파일 다운로드 및 업로드 구현 (PhpSpreadsheet 사용) 관리자 06-21 257
14 PHP 스크립트에서 JSON 반환하기 관리자 11-26 2,534
13 PhpSpreadsheet 설치 및 사용법 정리 관리자 11-07 551
12 PHP 프로그램에서 BULK INSERT 문장을 만드는 방법 관리자 07-07 508
11 PHP 문자 암호화하여 Form 전송하기 관리자 07-07 482
10 전화번호 체크하기(휴대전화, 유선, 대표번호 등등) 관리자 07-03 434
9 get vimeo thumb 관리자 04-14 447
8 PHP 에서 MySQL 사용하기 (연결, DB&테이블 생성, 데이터 삽입/선택) 관리자 04-13 602
7 [PHP] 특정 영역 자동 스크린샷 저장 후 가장 최신 이미지 DB 저장 관리자 03-15 518
6 GD PHP TEXT ALIGN 한글 관리자 03-14 423
5 [PHP] 이미지파일에 텍스트 넣기 (라이브러리) 관리자 03-12 756
4 PHP 이미지 워터마크(텍스트&이미지) 삽입하기 관리자 03-11 425
3 한글 종성유무에 맞는 조사(은/는/이/가/을/를/과/와) 변환 관리자 06-22 662
2 한국어 조사 처리 함수 관리자 04-08 760
1 PHP 에서 callback 함수를 이용하여서 mysql select row 함수 개발하는 방법 관리자 10-22 919