728x90
반응형

리캡챠를 적용할 페이지는 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 부분만 받아 검증한 것입니다.



728x90
반응형

+ Recent posts