중요: reCAPTCHA API 버전 1.0은 더 이상 지원되지 않습니다. 버전 2.0으로 업그레이드하세요. 자세히 알아보기
reCAPTCHA PHP 라이브러리는 CAPTCHA를 봇의 악용을 막을 수 있습니다. 라이브러리는 reCAPTCHA API:
PHP와 함께 reCAPTCHA를 사용하려면 reCAPTCHA PHP를 다운로드하세요. 라이브러리를 사용하여 v3 지도에 통합할 수 있습니다. 거기에서는 하나의 파일 (recaptchalib.php)만 필요합니다. 다른 파일은 예시, 리드미, 법적 문제가 있으며 기능에는 영향을 미치지 않습니다.
빠른 시작
API 키를 신청한 후 사이트에 reCAPTCHA를 설치하기 위한 기본 안내는 다음과 같습니다. 전체 PHP 플러그인에 대한 참조 가이드는 아래에서 확인할 수 있습니다.
클라이언트 측 (보안문자 이미지를 표시하는 방법)
PHP 라이브러리를 사용하여 reCAPTCHA 위젯을 표시하려면 이 코드 스니펫을 <form> reCAPTCHA 위젯이 위치할 요소 배치:
require_once('recaptchalib.php'); $publickey = "your_public_key"; // you got this from the signup page echo recaptcha_get_html($publickey);
이 코드를 사용하면 양식이 다음과 같이 표시될 수 있습니다.
<html> <body> <!-- the body tag is required or the CAPTCHA may not show on some browsers --> <!-- your HTML content --> <form method="post" action="verify.php"> <?php require_once('recaptchalib.php'); $publickey = "your_public_key"; // you got this from the signup page echo recaptcha_get_html($publickey); ?> <input type="submit" /> </form> <!-- more of your HTML content --> </body> </html>
your_public_key
를 다음으로 바꿔 $publickey를 설정하는 것을 잊지 마세요.
API 공개 키입니다.
'action'의 값은 속성이 'verify.php'입니다. 이제 verify.php가 양식의 값이 제출되는 대상 파일입니다. 따라서 파일이 필요할 때 verify.php가 클라이언트 html과 동일한 위치에 있어야 합니다.
위 예시의 required_once 함수의 경우 Recaptchalib.php가 동일한 위치에 있을 것으로 예상합니다.
디렉터리를 양식 파일로 사용합니다. 다른 디렉터리에 있으면 적절하게 연결해야 합니다.
예를 들어 Recaptchalib.php가 'captcha' 디렉터리에 있는 경우 동일한 인코더-디코더
레벨을 양식 파일로 지정하면 함수는 다음과 같습니다.
require_once('captcha/recaptchalib.php')
서버 측 (사용자가 올바른 답변을 입력했는지 테스트하는 방법)
다음 코드를 verify.php 파일의 상단에 배치해야 합니다.
<?php require_once('recaptchalib.php'); $privatekey = "your_private_key"; $resp = recaptcha_check_answer ($privatekey, $_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]); if (!$resp->is_valid) { // What happens when the CAPTCHA was entered incorrectly die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." . "(reCAPTCHA said: " . $resp->error . ")"); } else { // Your code here to handle a successful verification } ?>
위 코드에서 다음이 수행됩니다.
recaptcha_check_answer
는 사용자가 광고를 볼 수 있는지 여부를 나타내는 객체를 반환합니다.
챌린지를 완료했습니다.$resp->is_valid
가 true이면 보안문자 확인이 올바르게 완료된 것이며 양식 처리를 계속해야 합니다.$resp->is_valid
가 false인 경우 사용자가 올바른 보안문자를 입력하지 못한 것입니다.
양식을 다시 표시하여 사용자가 다시 시도할 수 있도록 해야 합니다. 이 경우에는
$resp->error
는 recaptcha_get_html
에 제공할 수 있는 오류 코드입니다.
오류 코드를 전달하면 reCAPTCHA 컨트롤에 사용자에게
텍스트를 잘못 입력했으므로 다시 시도해 주세요.이 코드는 private 키를 요청하므로 혼동해서는 안 됩니다. 확인할 수 있습니다 공개 키와 동일한 페이지에서 이 정보를 가져옵니다.
또한 POST 대신 $_POST를 사용하여 양식 변수를 가져오도록 양식이 $_REQUEST를 사용해야 하고 양식 자체가 POST 메서드를 사용하고 있음을 확인합니다.
이것으로 모든 작업이 완료되었습니다. 이제 사이트에서 reCAPTCHA가 작동할 것입니다.
추가 자료
PHP 플러그인 참조 가이드
다음은 reCAPTCHA PHP 플러그인의 모든 메서드의 전체 목록입니다.
Recaptcha_get_html 함수
recaptcha_get_html
함수는 reCAPTCHA를 표시하는 HTML을 표시합니다.
있습니다.
recaptcha_get_html | |
매개변수 | |
$pubkey -- 문자열입니다. 필요합니다. | API 가입 페이지의 reCAPTCHA 공개 키 |
$error -- 문자열입니다. 선택적 (기본값은 null임) | 이 문자열이 설정되면 reCAPTCHA 영역에 오류 코드가 표시됩니다. 나타냅니다. ReCaptchaResponse->$error에서 가져온 오류 코드입니다. |
$use_ssl -- boolean. 선택사항 (기본값은 false) | SSL 기반 API를 사용해야 할까요? 만약 SSL을 통해 사용자에게 알리려면 이 값을 true로 설정해야 합니다. 그래야 오류 대화상자가 표시되지 않습니다. 사용자의 브라우저에 표시됩니다. |
반환 값 | 웹페이지에 배치할 HTML이 포함된 문자열입니다. |
reCAPTCHA_check_answer 함수
사용자가 보안문자에 대한 답변을 포함하여 HTML 양식을 작성하면
양식을 제출할 때
recaptcha_check_answer
함수를 사용하세요. 사용자의 답변은 두 개의 양식 필드에 표시됩니다.
recaptcha_challenge_field
및 recaptcha_response_field
이
reCAPTCHA 라이브러리가 reCAPTCHA 서버에 HTTP 요청을 하고 사용자의
있습니다.
recaptcha_check_answer | |
매개변수 | |
$privkey -- 문자열입니다. 필요합니다. | API 가입 페이지의 reCAPTCHA 비공개 키입니다. |
$remoteip -- 문자열. 필요합니다. | 사용자의 IP 주소(192.168.0.1 형식) |
$challenge -- 문자열입니다. 필요합니다. |
양식 필드 reCAPTCHA_challenge_field의 값입니다. |
$response -- 문자열입니다. 필수 | 양식 필드의 Recaptcha_response_field의 값 |
반환 값 | ReCaptchaResponse 클래스의 인스턴스입니다. |
ReCaptchaResponse | |
필드 | |
$is_valid -- boolean | reCAPTCHA가 답이 타당하다고 생각했나요? |
$error -- 문자열 | 답변이 잘못되었다면 무엇이 문제였나요? 이 오류 코드는 reCAPTCHA_get_html에 사용됨 |
반환 값 | 이메일 주소를 디코딩하는 HTML 또는 원시 URL(작업하는 항목에 따라 다름) 합니다. |
메일 숨기기
reCAPTCHA PHP 라이브러리에는 Mailhide API에 대한 바인딩이 포함되어 있습니다. 이 API를 사용하면 이메일을 reCAPTCHA로 래핑하여 스팸 발송자가 이메일을 보지 못하게 할 수 있습니다. 시험...@example.com
PHP 라이브러리의 Mailhide 부분에는 PHP mcrypt 모듈이 필요합니다.
Mailhide API는 두 가지 함수 recaptcha_mailhide_html
및
recaptcha_mailhide_url
입니다. 함수의 매개변수는 동일합니다. _html 버전
은 HTML을 반환합니다.
웹페이지에 직접 게시할 수 있습니다. 전달된 이메일의 사용자 이름 부분
가 잘리고 Mailhide를 호출하는 링크로 대체됩니다. _url 버전에서는
이메일을 디코딩하고 이메일을 HTML에 배치하는 것은 사용자에게 맡깁니다.
reCAPTCHA | |
매개변수 | |
$pubkey -- 문자열 | 가입 페이지의 Mailhide 공개 키 |
$privkey -- 문자열 | 가입 페이지의 Mailhide 비공개 키 |
$email -- 문자열 | 숨기려는 이메일 주소입니다. |
다음 예는 Mailhide를 사용하는 방법을 보여줍니다.
<html><body> <? require_once ("recaptchalib.php"); // get a key at http://www.google.com/recaptcha/mailhide/apikey $mailhide_pubkey = ''; $mailhide_privkey = ''; ?> The Mailhide encoding of example@example.com is <? echo recaptcha_mailhide_html ($mailhide_pubkey, $mailhide_privkey, "example@example.com"); ?>. <br> The url for the email is: <? echo recaptcha_mailhide_url ($mailhide_pubkey, $mailhide_privkey, "example@example.com"); ?> <br> </body></html>