중요: reCAPTCHA API 버전 1.0은 더 이상 지원되지 않습니다. 버전 2.0으로 업그레이드하세요. 자세히 알아보기
reCAPTCHA PHP 라이브러리는 PHP 웹사이트에 보안문자를 간단하게 입력하여 봇의 악용을 방지하는 데 도움을 줍니다. 라이브러리는 reCAPTCHA API를 래핑합니다.
PHP에서 reCAPTCHA를 사용하려면 reCAPTCHA PHP 라이브러리를 다운로드하세요. 여기에서는 파일 1개만 필요합니다 (recaptchalib.php). 다른 파일은 예, 리드미 및 법적 항목이며 기능에는 영향을 미치지 않습니다.
빠른 시작
API 키를 등록한 후 사이트에 reCAPTCHA를 설치하는 방법은 다음과 같습니다. PHP 플러그인에 대한 전체 참조 가이드는 아래에서 확인할 수 있습니다.
클라이언트 측 (보안문자 이미지가 표시되도록 하는 방법)
PHP 라이브러리를 사용하여 reCAPTCHA 위젯을 표시하려면 reCAPTCHA 위젯이 배치될 <form> 요소 내부에 이 코드 스니펫을 삽입해야 합니다.
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
를 API 공개 키로 바꿔 $publickey를 설정해야 합니다.
'action' 속성의 값은 'verify.php'입니다. 이제 verify.php가 이 양식의 값이 제출되는 대상 파일이 됩니다. 따라서 클라이언트 html과 동일한 위치에 verify.php 파일이 있어야 합니다.
위 예의 required_once 함수는 reCAPTCHA.php가 양식 파일과 동일한 디렉터리에 있을 것으로 예상합니다. 이 디렉터리가 다른 디렉터리에 있다면 적절하게 연결해야 합니다.
예를 들어 reCAPTCHA가 양식 파일과 같은 수준에 있는 '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 컨트롤에 사용자가 텍스트를 잘못 입력했으며 다시 시도해야 한다고 설명하는 메시지가 표시됩니다.이 코드는 공개 키와 혼동해서는 안 되는 비공개 키를 요청합니다. 이 키는 공개 키와 동일한 페이지에서 가져옵니다.
또한 $_REQUEST 대신 $_POST를 사용하여 양식 변수를 가져오도록 양식이 설정되어 있고 양식 자체에서 POST 메서드를 사용 중인지 확인합니다.
이제 사이트에서 reCAPTCHA가 작동할 것입니다.
추가 자료
PHP 플러그인 참조 가이드
다음은 reCAPTCHA PHP 플러그인의 전체 메서드가 포함된 목록입니다.
reCAPTCHA 함수
recaptcha_get_html
함수는 사용자에게 reCAPTCHA를 제시하는 HTML을 표시합니다.
recaptcha_get_html | |
매개변수 | |
$pubkey -- 문자열. 필수 항목입니다. | API 가입 페이지의 reCAPTCHA 공개 키 |
$error -- 문자열입니다. 선택사항입니다 (기본값: null). | 이 문자열이 설정되면 reCAPTCHA 영역에 지정된 오류 코드가 표시됩니다. ReCaptchaResponse->$error에서 발생한 오류 코드입니다. |
$use_ssl -- 부울. 선택사항 (기본값: false) | SSL 기반 API를 사용해야 하나요? SSL을 통해 사용자에게 페이지를 표시하는 경우 사용자의 브라우저에 오류 대화상자가 표시되지 않도록 true로 설정해야 합니다. |
반환 값 | 웹페이지에 배치할 HTML이 포함된 문자열입니다. |
reCAPTCHA 함수
사용자가 보안문자에 대한 답변을 포함하여 HTML 양식을 작성한 후 recaptcha_check_answer
함수를 사용하여 양식을 제출할 때 사용자의 답변을 확인하려고 합니다. 사용자의 답변은 recaptcha_challenge_field
및 recaptcha_response_field
의 두 가지 양식 필드에
입력됩니다. reCAPTCHA 라이브러리는 reCAPTCHA 서버에 HTTP 요청을 하고 사용자의 답변을 확인합니다.
recaptcha_check_answer | |
매개변수 | |
$privkey -- 문자열이며 필수 항목입니다. | API 가입 페이지에 등록된 reCAPTCHA 비공개 키 |
$remoteip -- 문자열이며 필수입니다. | 192.168.0.1 형식의 사용자 IP 주소입니다. |
$challenge -- 문자열. 필수. |
양식 필드 returntcha_challenge_field 값 |
$response -- 문자열. 필수 | 양식 필드 reCAPTCHA reetcha_response_field의 값 |
반환 값 | ReCaptchaResponse 클래스의 인스턴스 |
ReCaptchaResponse | |
필드 | |
$is_유효한 값: 부울 | reCAPTCHA에서 답변이 유효하다고 판단했나요? |
$error -- 문자열 | 답변이 잘못된 경우 어떤 문제가 있었나요? 이 오류 코드는 Recaptcha_get_html에서 사용할 수 있습니다. |
반환 값 | 호출한 함수에 따라 이메일 주소를 디코딩할 HTML 또는 원시 URL. |
메일 숨기기
reCAPTCHA PHP 라이브러리에는 Mailhide API 결합이 포함되어 있습니다. 이 API를 사용하면 스팸 발송자가 이메일을 reCAPTCHA로 래핑할 수 있으므로 exam...@example.com은 스팸 발송자가 이메일을 볼 수 없습니다.
PHP 라이브러리의 Mailhide 부분에는 PHP mcrypt 모듈이 필요합니다.
Mailhide API는 두 가지 함수 recaptcha_mailhide_html
및 recaptcha_mailhide_url
로 구성됩니다. 함수의 매개변수가 동일합니다. _html 버전은 웹페이지에 직접 삽입할 수 있는 HTML을 반환합니다. 전달된 이메일의 사용자 이름 부분은 잘리고 Mailhide를 호출하는 링크로 대체됩니다. _url 버전은 이메일을 디코딩할 수 있는 URL을 제공하며 이메일을 HTML에 배치할 수 있도록 사용자에게 맡깁니다.
remembertcha_mailhide_url / restricttcha_mailhide_html | |
매개변수 | |
$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>