Баг: не работает MailHide в WP-reCAPTCHA

reCAPTCHA – отличная вещь. Помимо защиты регистрации и комментариев (а также доброго дела в виде участия пользователя в распознавании книг), reCAPTCHA предоставляет возможность скрывать e-mail адреса. Вот только функция MailHide (reCAPTCHA 2.9.6) с лету не заработала на WordPress 2.8 – адреса электронной почты отображались в открытом виде, как и прежде. Пришлось покопаться в исходном коде.

recaptcha

В файле wp-recaptcha.php есть функция mh_insert_email – это и есть основной фильтр контента, ищем в функции условие:

if (($needed_capability && current_user_can($needed_capability)) || !$recaptcha_opt['re_comments']) {

Переменная re_comments равна 1 если reCAPTCHA включена для комментариев. Логика авторов мне не очень понятна, я, например, не собираюсь использовать reCAPTCHA для защиты комментариев, а вот защитить почтовые адреса хотел бы. Меняем условие на:

if ($needed_capability && current_user_can($needed_capability)) {

Тоже самое проделываем в функции mh_replace_hyperlink:

if (($needed_capability && current_user_can($needed_capability)) || !$recaptcha_opt['re_comments']) {

Меняем на:

if ($needed_capability && current_user_can($needed_capability)) {

Помимо этого, плагин неправильно обрабатывает суффикс адреса, т.е. если было:

user At mail.ru

Будет что-то вроде:

u... At u

В функции mh_replace ищем строчку:

$html = htmlentities($emailparts[0], ENT_QUOTES) . "<a href='" . htmlentities($url, ENT_QUOTES) ."' onclick=\"window.open('" . htmlentities($url, ENT_QUOTES) . "', '', 'toolbar=0, scrollbars=0, location=0, statusbar=0, menubar=0, resizable=0, width=500, height=300'); return false;\" title=\"" . $recaptcha_opt['mh_replace_title'] . "\">...</a>@" . htmlentities($emailparts[0], ENT_QUOTES);

Меняем $emailparts[0] на $emailparts[1].

Скрывает адреса вот так (для незарегистрированных пользователей):

u...@u

Вот так – читайте письма, а не спам :)

Распечатать Распечатать

Другие записи:

Сброс пароля WordPress в MySQL
Настраиваем систему индексации и поиска Sphinx для LiveStreet
Preview комментариев и отправка по Ctrl+Enter в WordPress
Баг: двойные ссылки навигации по страницам в WordPress 2.8
MySQL: замена значений в поле
Конвертируем IPB 2.3.x в phpBB 3.0.5
Баг: не работает Search Unleashed 1.0.2
GPRS/EDGE доступ в интернет через bluetooth в Ubuntu 8.10
С www и без. Сохранение ссылочной популярности сайта.
Запуск Java и Apache Felix в chroot jail окружении в Debian Lenny

Добавить комментарий

Ваш e-mail не будет опубликован.

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">