클라우드플레어(CloudFlare) 무료 캡차 대안 적용 > 그누보드5 플러그인

그누보드5 플러그인

그누보드 호환이거나 독립적으로 실행되는 플러그인을 소개합니다.

클라우드플레어(CloudFlare) 무료 캡차 대안 적용 정보

클라우드플레어(CloudFlare) 무료 캡차 대안 적용

첨부파일

cloudflare_captcha.zip (22.2K) 57회 다운로드 2024-08-18 14:23:24 포인트 차감100
테스트한 버전5.5.8.3.3
호환 가능 버전5.3 이상

본문

요즘 많이들 사용하고 있는 클라우드플레어(CloudFlare) 캡차를 구글 rechatcha 참고해서 그누보드에 적용해봤습니다.

 

https://www.cloudflare.com/ko-kr/products/turnstile/

클라우드플레어 가입하셔서 사이트 키, 시크릿 키 환경설정에 입력 해주셔야 정상적으로 실행됩니다.

 

3543817314_1723959373.9005.png

아래는 변경한 코드들 입니다.

 


// adm/config_form.php
 
if (!isset($config['cf_captcha_site_key'])) {
    sql_query(
        "ALTER TABLE `{$g5['config_table']}`
        ADD `cf_captcha_site_key` varchar(100) NOT NULL DEFAULT '' AFTER `cf_captcha`,
        ADD `cf_captcha_secret_key` varchar(100) NOT NULL DEFAULT '' AFTER `cf_captcha_site_key`
     ", true);
}

 


// adm/config_form.php
 
<tr>
                        <th scope="row"><label for="cf_captcha">캡챠 선택<strong class="sound_only">필수</strong></label></th>
                        <td colspan="3">
                            <?php echo help('사용할 캡챠를 선택합니다.<br>1) Kcaptcha 는 그누보드5의 기본캡챠입니다. ( 문자입력 )<br>2) reCAPTCHA V2 는 구글에서 서비스하는 원클릭 형식의 간편한 캡챠입니다. ( 모바일 친화적 UI )<br>3) Invisible reCAPTCHA 는 구글에서 서비스하는 안보이는 형식의 캡챠입니다. ( 간혹 퀴즈를 풀어야 합니다. )<br>') ?>
                            <select name="cf_captcha" id="cf_captcha" required class="required">
                                <option value="kcaptcha" <?php echo get_selected($config['cf_captcha'], 'kcaptcha'); ?>>Kcaptcha</option>
                                <option value="recaptcha" <?php echo get_selected($config['cf_captcha'], 'recaptcha'); ?>>reCAPTCHA V2</option>
                                <option value="recaptcha_inv" <?php echo get_selected($config['cf_captcha'], 'recaptcha_inv'); ?>>Invisible reCAPTCHA</option>
                                <option value="cloudflare" <?php echo get_selected($config['cf_captcha'], 'cloudflare'); ?>>CloudFlare</option>
                            </select>
                        </td>
                    </tr>
                    <tr class="kcaptcha_mp3">
                        <th scope="row"><label for="cf_captcha_mp3">음성캡챠 선택<strong class="sound_only">필수</strong></label></th>
                        <td colspan="3">
                            <?php echo help('kcaptcha 사용시 ' . str_replace(array('recaptcha_inv', 'recaptcha', 'cloudflare'), 'kcaptcha', G5_CAPTCHA_URL) . '/mp3 밑의 음성 폴더를 선택합니다.') ?>
                            <select name="cf_captcha_mp3" id="cf_captcha_mp3" required class="required">
                                <?php
                                $arr = get_skin_dir('mp3', str_replace(array('recaptcha_inv', 'recaptcha', 'cloudflare'), 'kcaptcha', G5_CAPTCHA_PATH));
                                for ($i = 0; $i < count($arr); $i++) {
                                    if ($i == 0) {
                                        echo "<option value=\"\">선택</option>";
                                    }
                                    echo "<option value=\"" . $arr[$i] . "\"" . get_selected($config['cf_captcha_mp3'], $arr[$i]) . ">" . $arr[$i] . "</option>\n";
                                }
                                ?>
                            </select>
                        </td>
                    </tr>
                    <tr>
                        <th scope="row"><label for="cf_recaptcha_site_key">구글 reCAPTCHA Site key</label></th>
                        <td colspan="3">
                            <?php echo help('reCAPTCHA V2와 Invisible reCAPTCHA 캡챠의 sitekey 와 secret 키는 동일하지 않고, 서로 발급받는 키가 다릅니다.') ?>
                            <input type="text" name="cf_recaptcha_site_key" value="<?php echo get_sanitize_input($config['cf_recaptcha_site_key']); ?>" id="cf_recaptcha_site_key" class="frm_input" size="52"> <a href="https://www.google.com/recaptcha/admin" target="_blank" class="btn_frmline">reCAPTCHA 등록하기</a>
                        </td>
                    </tr>
                    <tr>
                        <th scope="row"><label for="cf_recaptcha_secret_key">구글 reCAPTCHA Secret key</label></th>
                        <td colspan="3">
                            <input type="text" name="cf_recaptcha_secret_key" value="<?php echo get_sanitize_input($config['cf_recaptcha_secret_key']); ?>" id="cf_recaptcha_secret_key" class="frm_input" size="52">
                        </td>
                    </tr>
                    
                    <tr>
                        <th scope="row"><label for="cf_captcha_site_key">CloudFlare CAPTCHA Site key</label></th>
                        <td colspan="3">
                            <input type="text" name="cf_captcha_site_key" value="<?php echo get_sanitize_input($config['cf_captcha_site_key']); ?>" id="cf_captcha_site_key" class="frm_input" size="52"> <a href="https://www.cloudflare.com/ko-kr/products/turnstile/" target="_blank" class="btn_frmline">CloudFlare CAPTCHA 등록하기</a>
                        </td>
                    </tr>
                    <tr>
                        <th scope="row"><label for="cf_captcha_secret_key">CloudFlare CAPTCHA Secret key</label></th>
                        <td colspan="3">
                            <input type="text" name="cf_captcha_secret_key" value="<?php echo get_sanitize_input($config['cf_captcha_secret_key']); ?>" id="cf_captcha_secret_key" class="frm_input" size="52">
                        </td>
                    </tr>

 


// adm/config_form.php
$("#cf_captcha").on("change", function() {
     if ($(this).val() == 'recaptcha' || $(this).val() == 'recaptcha_inv' || $(this).val() == 'cloudflare') {
         $("[class^='kcaptcha_']").hide();
     } else {
         $("[class^='kcaptcha_']").show();
     }
}).trigger("change");

 


// adm/config_form_update.php
 
$check_keys = array('cf_cert_kcb_cd', 'cf_cert_kcp_cd', 'cf_editor', 'cf_recaptcha_site_key', 'cf_recaptcha_secret_key', 'cf_captcha_site_key', 'cf_captcha_secret_key', 'cf_naver_clientid', 'cf_naver_secret', 'cf_facebook_appid', 'cf_facebook_secret', 'cf_twitter_key', 'cf_twitter_secret', 'cf_google_clientid', 'cf_google_secret', 'cf_googl_shorturl_apikey', 'cf_kakao_rest_key', 'cf_kakao_client_secret', 'cf_kakao_js_apikey', 'cf_payco_clientid', 'cf_payco_secret', 'cf_cert_kg_cd', 'cf_cert_kg_mid');
 

 


// adm/config_form_update.php
 
cf_captcha = '{$_POST['cf_captcha']}',
cf_recaptcha_site_key = '{$_POST['cf_recaptcha_site_key']}',
cf_recaptcha_secret_key   =   '{$_POST['cf_recaptcha_secret_key']}',
cf_captcha_site_key = '{$_POST['cf_captcha_site_key']}',
cf_captcha_secret_key   =   '{$_POST['cf_captcha_secret_key']}',

 

나머지는 plugin/cloudflare 폴더를 업로드 해주시면 됩니다.

 

추천
7
  • 복사

댓글 전체

© SIRSOFT
현재 페이지 제일 처음으로