コード例 #1
0
 public function onInit($id = 'dynamic_geetest_1')
 {
     $document = JFactory::getDocument();
     $app = JFactory::getApplication();
     JHtml::_('jquery.framework');
     //检查是否存在公钥
     $pubkey = $this->params->get('public_key', '');
     if ($pubkey == null || $pubkey == '') {
         throw new Exception(JText::_('PLG_GEETEST_ERROR_NO_PUBLIC_KEY'));
     }
     //常量公钥
     if (!defined('CAPTCHA_ID')) {
         define('CAPTCHA_ID', $pubkey);
     }
     //语言
     $lang = $this->params->get('lang', 'zh-cn');
     //展现形式
     $product = $this->params->get('product', 'float');
     //定义一些JS
     $GtSdk = new GeetestLib();
     $return = $GtSdk->register();
     if ($return) {
         $_SESSION['gtserver'] = 1;
         $result = array('success' => 1, 'gt' => CAPTCHA_ID, 'challenge' => $GtSdk->challenge);
     } else {
         $_SESSION['gtserver'] = 0;
         $rnd1 = md5(rand(0, 100));
         $rnd2 = md5(rand(0, 100));
         $challenge = $rnd1 . substr($rnd2, 0, 2);
         $result = array('success' => 0, 'gt' => CAPTCHA_ID, 'challenge' => $challenge);
         $_SESSION['challenge'] = $result['challenge'];
     }
     $js = 'jQuery(document).ready(function(){if(window.hasOwnProperty("Geetest")){';
     $js .= '
         var ' . $id . '_Geetest=new window.Geetest({
             gt : "' . $result['gt'] . '",
             challenge : "' . $result['challenge'] . '",
             product : "' . $product . '",
             offline : !' . $result['success'] . ',
             lang : "' . $lang . '",
         }).appendTo("#' . $id . '");
     ';
     //是否阻止表单提交
     $holdform = $this->params->get('holdform', 0);
     if ($holdform) {
         $js .= '
             var form_ele=jQuery("#' . $id . '").parentsUntil("form").parent();
             var form_submit=function(){return false;};
             ' . $id . '_Geetest.onReady(function(){
                 jQuery("body").on("submit", form_submit, form_submit);
             });
             ' . $id . '_Geetest.onSuccess(function(){
                 jQuery("body").off("submit", form_submit, form_submit);
             });
         ';
     }
     $js .= '}});';
     $document->addScriptDeclaration($js);
     return true;
 }
コード例 #2
0
 public function onInit($id = 'dynamic_geetest_1')
 {
     $document = JFactory::getDocument();
     $app = JFactory::getApplication();
     $lang = JFactory::getLanguage();
     JHtml::_('jquery.framework');
     //检查是否存在公钥
     $pubkey = $this->params->get('public_key', '');
     if ($pubkey == null || $pubkey == '') {
         throw new Exception(JText::_('PLG_GEETEST_ERROR_NO_PUBLIC_KEY'));
     }
     //常量公钥
     if (!defined('CAPTCHA_ID')) {
         define('CAPTCHA_ID', $pubkey);
     }
     //检测语言
     if ($lang->getTag() == 'zh-CN') {
         $glang = 'zh-cn';
     } else {
         $glang = 'en';
     }
     //定义一些JS
     $GtSdk = new GeetestLib();
     $return = $GtSdk->register();
     if ($return) {
         $_SESSION['gtserver'] = 1;
         $result = array('success' => 1, 'gt' => CAPTCHA_ID, 'challenge' => $GtSdk->challenge);
     } else {
         $_SESSION['gtserver'] = 0;
         $rnd1 = md5(rand(0, 100));
         $rnd2 = md5(rand(0, 100));
         $challenge = $rnd1 . substr($rnd2, 0, 2);
         $result = array('success' => 0, 'gt' => CAPTCHA_ID, 'challenge' => $challenge);
         $_SESSION['challenge'] = $result['challenge'];
     }
     //$file='http://static.geetest.com/static/js/geetest.0.0.0.js';
     //JHtml::_('script', $file, true, true);
     $document->addScriptDeclaration('
         jQuery(document).ready(function(){
             if(window.hasOwnProperty("Geetest")){
                 new window.Geetest({
                     gt : "' . $result['gt'] . '",
                     challenge : "' . $result['challenge'] . '",
                     product : "float", //下一版本增加可选
                     offline : !' . $result['success'] . ',
                     lang : "' . $glang . '" //下一版本增加可选
                 }).appendTo("#' . $id . '");
             }
         });
     ');
     return true;
 }
コード例 #3
0
ファイル: ApiController.php プロジェクト: rainbow88/hummel
 public function geetestAction()
 {
     require EXTENSION_DIR . 'Geetestlib.php';
     $GtSdk = new GeetestLib();
     $return = $GtSdk->register();
     if ($return) {
         $this->session->set_userdata('gtserver', 1);
         $result = array('success' => 1, 'gt' => SYS_GEE_CAPTCHA_ID, 'challenge' => $GtSdk->challenge);
         echo json_encode($result);
     } else {
         $this->session->set_userdata('gtserver', 0);
         $rnd1 = md5(rand(0, 100));
         $rnd2 = md5(rand(0, 100));
         $challenge = $rnd1 . substr($rnd2, 0, 2);
         $result = array('success' => 0, 'gt' => CAPTCHA_ID, 'challenge' => $challenge);
         $this->session->set_userdata('challenge', $result['challenge']);
         echo json_encode($result);
     }
     exit;
 }
コード例 #4
0
ファイル: s_check.php プロジェクト: chajianku/s_check
function s_check_loginshow()
{
    $s_check_loginoption = option::xget("s_check", "login_check");
    if ($s_check_loginoption == 1) {
        echo "<div class=\"box\">";
        $geetest = new GeetestLib();
        $geetest->set_captchaid("a757a567a6c660610521e79a429d7e4c");
        if ($geetest->register()) {
            echo $geetest->get_widget("embed");
        }
        echo "</div><br/>";
    } elseif ($s_check_loginoption == 2) {
        echo "<div class=\"box\">";
        $geetest = new GeetestLib();
        $geetest->set_captchaid("a757a567a6c660610521e79a429d7e4c");
        if ($geetest->register()) {
            echo $geetest->get_widget("float");
        }
        echo "</div><br/>";
    }
}
コード例 #5
0
<?php

/**
 * 使用Get的方式返回:challenge和capthca_id 此方式以实现前后端完全分离的开发模式 专门实现failback
 * @author Tanxu
 */
error_reporting(0);
require_once dirname(dirname(__FILE__)) . '/lib/class.geetestlib.php';
$GtSdk = new GeetestLib();
session_start();
$return = $GtSdk->register();
if ($return) {
    $_SESSION['gtserver'] = 1;
    $result = array('success' => 1, 'gt' => $GtSdk->captcha_id, 'challenge' => $GtSdk->challenge);
    echo json_encode($result);
} else {
    $_SESSION['gtserver'] = 0;
    $rnd1 = md5(rand(0, 100));
    $rnd2 = md5(rand(0, 100));
    $challenge = $rnd1 . substr($rnd2, 0, 2);
    $result = array('success' => 0, 'gt' => $GtSdk->captcha_id, 'challenge' => $challenge);
    $_SESSION['challenge'] = $result['challenge'];
    echo json_encode($result);
}
コード例 #6
0
<?php

/**
 * 使用Get的方式返回:challenge和capthca_id 此方式以实现前后端完全分离的开发模式 专门实现failback
 * @author Tanxu
 */
error_reporting(0);
require_once dirname(dirname(__FILE__)) . '/lib/class.geetestlib.php';
$GtSdk = new GeetestLib();
session_start();
$_SESSION['gtsdk'] = $GtSdk;
if ($GtSdk->register()) {
    $_SESSION['gtserver'] = 1;
    $result = array('success' => 1, 'gt' => CAPTCHA_ID, 'challenge' => $GtSdk->challenge);
    echo json_encode($result);
} else {
    $_SESSION['gtserver'] = 0;
    $result = array('success' => 0);
    echo json_encode($result);
}
コード例 #7
0
 /**
  * 验证码验证
  * @param Request $request
  */
 public function captcha(Request $request)
 {
     $GtSdk = new \GeetestLib();
     session_start();
     $return = $GtSdk->register();
     if ($return) {
         $_SESSION['gtserver'] = 1;
         $result = array('success' => 1, 'gt' => CAPTCHA_ID, 'challenge' => $GtSdk->challenge);
         echo json_encode($result);
     } else {
         $_SESSION['gtserver'] = 0;
         $rnd1 = md5(rand(0, 100));
         $rnd2 = md5(rand(0, 100));
         $challenge = $rnd1 . substr($rnd2, 0, 2);
         $result = array('success' => 0, 'gt' => CAPTCHA_ID, 'challenge' => $challenge);
         $_SESSION['challenge'] = $result['challenge'];
         echo json_encode($result);
     }
 }