* @static * @return string */ public static function GetForm($theme='light', $size='', $lang=''){ global $config; $custom_size = !empty($size) ? ' data-size="' . htmlspecialchars($size) .'"' : ''; // conpact, normal $custom_lang = !empty($lang) || $lang != 'inherit' ? '?hl='. htmlspecialchars($lang) : ''; $html = ''; if( self::hasRecaptcha() ){ includeFile('thirdparty/recaptcha/autoload.php'); $html = ''; $html .= '
'; } return \gp\tool\Plugins::Filter('AntiSpam_Form', array($html)); } /** * Ouptut the html of a recaptcha area for use in a
* @static * */ public static function Form($theme='light'){ global $config; echo self::GetForm($theme,'',$config['recaptcha_language'] ?? null); } /** * Verify the user submitted form by checking anti-spam hooks and/or recaptcha if they exist * @static * */ public static function Check(){ global $page,$langmessage,$config,$dataDir; // if hooks return false, stop if( !\gp\tool\Plugins::Filter('AntiSpam_Check',array(true)) ) return false; // if recaptcha inactive, stop if( !self::hasRecaptcha() ) return true; if( empty($_REQUEST['g-recaptcha-response']) ){ return false; } require_once($dataDir.'/include/thirdparty/recaptcha/autoload.php'); if (!ini_get('allow_url_fopen')) { // allow_url_fopen = Off $recaptcha = new \ReCaptcha\ReCaptcha($config['recaptcha_private'], new \ReCaptcha\RequestMethod\SocketPost()); } else { // allow_url_fopen = On $recaptcha = new \ReCaptcha\ReCaptcha($config['recaptcha_private']); } if (!empty($_SERVER['HTTP_CLIENT_IP'])) { $ip = $_SERVER['HTTP_CLIENT_IP']; } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; } else { $ip = $_SERVER['REMOTE_ADDR']; } $resp = $recaptcha->verify($_REQUEST['g-recaptcha-response'], $ip); if (!$resp->isSuccess()) { //$error_codes = $resp->getErrorCodes(); //error_log(); msg($langmessage['INCORRECT_CAPTCHA']); return false; } return true; } } } namespace{ class gp_recaptcha extends \gp\tool\Recaptcha{} }