Ну все знают что у modx-а корявая капча.
Я уже писал в англоязычный форум сниппет с русской ( www.captcha.ru ) капчей.
Кому интересно, небольшой хак для eform для работы с той самой русской капчей .
# check vericode
if($vericode) {
//add support for captcha code - thanks to Djamoer
$user_captcha[0] = $fields['vericode'];
$cap_arr= preg_grep("(\d{4})", $user_captcha);
if ( $_SESSION['captcha_keystring'] != $cap_arr[0] || !$_SESSION['captcha_keystring'] || $_SESSION['captcha_keystring']== '' ) {
$_SESSION['captcha_keystring']='';
$vMsg[count($vMsg)]=$_lang['ef_failed_vericode'];
$rClass['vericode']=$invalidClass; //added in 1.4.4
} else {
$_SESSION['captcha_keystring']='';
}
// $code = $_SESSION['veriword'] ? $_SESSION['veriword'] : $_SESSION['eForm.VeriCode'];
// if($fields['vericode']!=$code) {
// $vMsg[count($vMsg)]=$_lang['ef_failed_vericode'];
// $rClass['vericode']=$invalidClass; //added in 1.4.4
// }
}
обратите внимание на $cap_arr= preg_grep("(\d{4})", $user_captcha);
этот re выкусывает 4 цифры из пользовательского ввода - такая у меня на сайте капча, можно сделать больше цифр или переписать re
в зависимости от настроек русской капчи.
По хорошему надо конечно в modx сделать нормальную капчу, но что то я энтузиазма не увидел со стороны разработчиков, поэтому ну его нафиг