Captcha 스팸글 등록 방지를 위한 Captch 적용 방법을 안내합니다.

확인해 주세요

Captcha는 기본적으로 zigger 자체 captcha를 이용하지만, manager 설정을 통해 Google reCaptcha v2로 대체할 수 있습니다.

사용 준비

Captcha를 사용하기 위해선 아래와 같이 Controller 최상단에 use 가 선언 되어야 합니다.
Controller /app/test.php
<?php
use Corelib\Func;

Controller에서 Captcha 사용 준비

View에 Captcha를 적용하기 위해 Controller에서 사용 준비를 합니다.
아래 예시 코드와 같이 View에 Captcha 출력을 위한 코드를 추가합니다.
Controller /app/test.php
<?php
use Corelib\Func;

...

$this->set('print_captcha', Func::get_captcha('captcha'));
인자값 설명
captcha 웹페이지에 출력될 Captcha 입력 input 의 name 선언

set() 을 통해 View에서 Captcha를 출력할 수 있도록 전달하며,
View에서는 넘겨 받은 $print_captcha 를 통해 웹페이지 화면에 Captcha를 출력합니다.

View에서 Captcha 출력

아래와 같이 Controller에서 넘겨 받은 $print_captcha를 통해 웹페이지 화면에 Captcha를 출력합니다.
View /theme/zigger-default/test.tpl.php
<?php echo $print_captcha; ?>
위 코드를 작성한 위치에 Captcha가 출력되며, zigger 기본 Captcha를 출력할 것인지, Google reCaptcha v2를 출력할 것인지의 여부는
manager 에서 설정 가능합니다.

View에서 Google reCaptcha v2로 대체 출력

zigger 설치 후 적용되는 기본 Captcha는 심플하고 간편한 사용을 제공하지만, 경우에 따라 보안성을 보장받지 못할 수 있습니다.
비교적 보안성이 높은 Google reCaptcha v2로 manager 설정을 통해 전환할 수 있습니다.
manager의 기본메뉴 > 기본 관리도구 > 기본정보 관리 페이지에서 기본 플러그인 사용 설정 항목 변경을 통해
기본 Captcha를 Google reCaptcha로 전환할 수 있습니다.

Submit Controller에서 Captcha 검증

Captcha가 삽입된 Form의 입력 항목을 모두 작성한 뒤 다른 Controller로 Submit 하게 되면,
Request 받은 Controller 에서 아래 Captcha 입력 코드를 검증할 수 있습니다.

먼저, Submit 된 Captcha 입력 코드 값을 Controller 에서 Request Method를 통해 수신 받습니다.
Controller /app/request_test.php
<?php
use Corelib\Func;
use Corelib\Vliad;

...

$req = Method::request('post', 'captcha');
Captcha 입력 코드 값을 수신 했다면, chk_captcha() Method를 통해 검증을 수행합니다.
Controller /app/request_test.php
<?php
use Corelib\Func;
use Corelib\Vliad;

...

$req = Method::request('post', 'captcha');

if(!Func::chk_captcha($req['captcha'])){
    Valid::set(
        array(
            'return' => 'error',
            'input' => 'captcha',
            'err_code' => 'NOTMATCH_CAPTCHA'
        )
    );
    Valid::turn();
}
Captcha 입력 코드가 올바르지 않다면 코드 실행이 중단되고, error가 노출됩니다.