Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
G_Z 16.03.2011 03:27 / 16.03.2011 03:28
@CLASS ReCAPTCHA @auto[] $self.hDefaultOptions[ $.theme['clean'] $.lang['ru'] ] $self.sChallengeURL[http://api.recaptcha.net/challenge] $self.sNoscriptChallengeURL[http://api.recaptcha.net/noscript] $self.sAJAXURL[http://api.recaptcha.net/js/recaptcha_ajax.js] $self.sVerifyURL[http://api-verify.recaptcha.net/verify] @create[hOptions] ^self.hDefaultOptions.add[^hash::create[$hOptions]] @printHTML[sPublicKey;hOptions;sErrorCode][sError] $sError[] ^if(def $sErrorCode){ $sError[&error=$sErrorCode] } $result[<script type="text/javascript"> var RecaptchaOptions = ^self._printOptions[$hOptions] </script> <script type="text/javascript" src="${self.sChallengeURL}?k=${sPublicKey}$sError"></script> <noscript> <iframe src="${self.sNoscriptChallengeURL}?k=${sPublicKey}$sError" height="300" width="500" frameborder="0"></iframe><br/> <textarea name="recaptcha_challenge_field" rows="3" cols="40"></textarea> <input type="hidden" name="recaptcha_response_field" value="manual_challenge"/> </noscript>] @printAJAX[sPublicKey;hOptions;sErrorCode][hDefaultOptions;sField;sValue] $result[<div id="recaptcha_container"></div> <script type="text/javascript" src="$self.sAJAXURL"></script> <script type="text/javascript"> Recaptcha.create("$sPublicKey", "recaptcha_container", ^self._printOptions[$hOptions])^; </script>] @verify[sPrivateKey;hData][fResult;tResult] $result[^hash::create[]] $fResult[^file::load[text;$self.sVerifyURL][ $.method[POST] $.form[ $.privatekey[$sPrivateKey] $.remoteip[$env:REMOTE_ADDR] $.challenge[$hData.recaptcha_challenge_field] $.response[$hData.recaptcha_response_field] ] $.headers[ $.[USER-AGENT][reCAPTCHA Parser3] ] $.timeout(10) ]] $tResult[^table::create[nameless]{^taint[as-is][$fResult.text]}] $result.valid(^tResult.0.bool(false)) ^tResult.offset(1) $result.errorcode[$tResult.0] @_printOptions[hOptions][hDefaultOptions;sField;sValue] $hDefaultOptions[^hash::create[$self.hDefaultOptions]] ^hDefaultOptions.add[^hash::create[$hOptions]] $result[{^hDefaultOptions.foreach[sField;sValue]{${sField}: $sValue}[, ]}]Звать так:
^ReCAPTCHA:printHTML[$sPublicKey]или, например, так:
^ReCAPTCHA:printAJAX[$sPublicKey][ $.callback[myCallbackFunction] ]Если вызывать динамически, то можно передать опции в констурктор и исключить их из вызова методов:
$oReCAPTCHA[^ReCAPTCHA::create[ $.lang['en'] ]] … ^oReCAPTCHA.printHTML[$sPublicKey]Проверка:
# хэш-результат с двумя ключами: флаг «valid» и описание ошибки «errorcode» $hCAPTCHA[^ReCAPTCHA:verify[$sSecretKey;$form:fields]] ^if($hCAPTCHA.valid){ OK }{ something wrong, ^ReCAPTCHA:printHTML[$sPublicKey;;$hCAPTCHA.errorcode] }