Поддержать Проект

Обратная связь

[MODX] Guru
  • Информация
  • Разработчикам
  • Дополнения
    • DocLister
    • DLMenu
    • DLCrumbs
    • DLBuildMenu
    • DLLastViews
    • DLSiblings
    • DLRequest
    • DLglossary
    • DLSitemap
    • DocInfo
    • FormLister
    • Wayfinder
    • phpthumb
    • LikeDislike
    • eForm
      • Обязательные параметры
      • Остальные параметры
      • События для PHP функций
      • Плейсхолдеры шаблона
      • Типы и форматы данных
      • Проверка данных
      • Защита от спама
      • Примеры
      • reCAPTCHA
    • Ditto
    • multiTV
    • AjaxMegaSearch
    • AjaxSearch
    • WebLoginPE
    • Breadcrumbs
    • CodeMirror
    • AnythingRating
    • Easy Newsletter
    • FirstChildRedirect
    • OpenGraphTags
    • ddTypograph
    • TagSaver
    • BlackList
    • CfgTv
    • ModxAccount
    • Forgot Manager Login
    • GetField
    • if
    • Jot
    • ListChild
    • ListIndexer
    • ManagerManager
    • ddMMEditor
    • MaxiGallery
    • MemberCheck
    • ddGetMultipleField
    • MetaX
    • MODxBB и phpBB
    • Yams
    • Personalize
    • PHx
    • Reflect
    • tagLinks
    • TransAlias
    • TvTagCloud
    • UltimateParent
    • WebSignup
    • WebLogin
    • countViews
    • thumb
    • imageCaptor
    • optimizeJPG
    • Preview Next
    • Shopkeeper
    • SiteMap
    • Sass
    • Selector
    • SimpleGallery
    • SimpleTube
    • SimpleFiles
    • Star Rating
    • MinifyX
    • adminNav
    • SimplePolls
    • CResource
    • MODxAPI
    • customTables
    • HtmlInLine
    • HtmlMinModxEvo
    • SHKUserProfile
    • PickDocsInTree
    • evoSearch
    • editDocs
    • PageBuilder
    • HybridAuth
    • Compare
    • alterTitle
  • Виджеты
  • Уроки
  • Разработчики
  • Готовые примеры
  • Блог
  • Конфиги
  • HTML коды
© [MODX] Guru
  • eForm

reCAPTCHA для eForm

  • Дополнения
  • eForm
  • reCAPTCHA
2247

reCAPTCHA для eForm

Установка

1. Прежде всего нужно получить ключи для сайта (siteKey и secretKey) – здесь

2. Скачиваем готовую PHP библиотеку каптчи здесь: github (Clone or download, Download ZIP)

3. Из архива, вытаскиваем папку src, закачиваем в папку /assets/snippets и переименовываем эту папку в recaptcha

4. Создаем сниппет ReCaptcha и вставляем в него данный код:

<?php
if(!defined('MODX_BASE_PATH')) {die('What are you doing? Get out of here!');}
include_once MODX_BASE_PATH.'assets/snippets/recaptcha/autoload.php';

if(!defined('siteKey')) {define('siteKey', 'siteKeyCodestring');}
if(!defined('secretKey')) {define('secretKey', 'secretKeyCodestring');}

$lang = isset($lang) ? $lang : 'ru';
$text = isset($text) ? $text : 'Вы не подтвердили, что вы не робот!';

unset($_SESSION['veriword']);

$script = '<script src="//google.com/recaptcha/api.js?hl='.$lang.'"></script>';
$modx->regClientStartupScript($script);

$Recaptcha = new \ReCaptcha\ReCaptcha(secretKey);

if(isset($_REQUEST['g-recaptcha-response'])){
	$resp = $Recaptcha->verify($_REQUEST['g-recaptcha-response'], $_SERVER['REMOTE_ADDR']);
	if($resp->isSuccess()){
		$_SESSION['veriword'] = $_SESSION['eForm.VeriCode'];
		$_POST['vericode'] = $_SESSION['eForm.VeriCode'];
	} else {
		$response = $resp->getErrorCodes();            
		if(!empty($response)){
			$codes='';
			foreach ($response as $code) { $codes.= $code; }
			$_SESSION['veriword'] = 'ReCaptchaErrors : '.$codes;
		}
	}
}
        
if(!function_exists('setReCaptcha')){
	function setReCaptcha(&$fields){
		$fields['ReCaptcha']= '
'; return true; } } if(!function_exists('verifyReCaptcha')){ function verifyReCaptcha(&$fields,&$vMsg,&$rMsg,&$rClass){ if($_SESSION['veriword'] !== $_SESSION['eForm.VeriCode']){ $vMsg[] = $text; } return true; } } ?>

5. В темплейты eForm прописываем плейсхолдер [+ReCaptcha+] в том месте, где хотим ее видеть (если вы используете в темплейтах вызов veriword.php, закройте его комментарием или удалите)

6. Перед вызовом eForm ставим вызов сниппета ReCaptcha [[ReCaptcha]], а в вызов самого eForm добавляем параметры:

&vericode=`1`
&eFormOnBeforeFormMerge=`setReCaptcha`
&eFormOnValidate=`verifyReCaptcha`