Наткнулся сейчас на одно несовершенство в Joomla 1.5, а именно: JDatabase::Quote() не ескейпит символы % и _ Что это значит на практике Символы % и _ заменяют собой "сколько угодно" и "один" любой символ — как * и . в регулярных выражениях — в SQL запросах с использованием LIKE. Например запрос Код (CODE): SELECT id FROM jbj_users WHERE email LIKE '%vassia%' находит вам всех пользователей с эл. почтой похожей на vassia, причем, что-то еще может быть как до, так и после этой подстроки: vassia@mail.ru и NEVAssia@yandex.ru — все попадут в ощип. Обычно подстроку для поиска получают из заполненной пользователем формы: Код (PHP): $search = JRequest::getVar('search'); и затем ее квотят и подают в запрос: Код (PHP): $query = 'SELECT id FROM jbj_users WHERE email LIKE ' . $db->Quote($search); Вот тут и получается, что если у человека адрес почты v_v_n@bk.ru , а в системе уже есть vovan@bk.ru , то может случиться, что новому откажут в регистрации под предлогом того, что такой адрес уже зарегистрирован. Где собака порылась JDatabase::Quote() вызывает для грязной работы функцию getEscaped(), принимающую два параметра. Второй — необязательный, по умолчанию false, как раз включает дополнительный escape % и _. Но он пропущен в вызове и потому всегда выключен. getEscaped() в свою очередь, переопределяется в JDatabaseMySQL и JDatabaseMySQLi. В обоих случаях, при включенном втором параметре, результат просто обрабатывается дополнительно стандартной функцией PHP addcslahses: Код (PHP): $result = addcslashes( $result, '%_' ); Так что при желании, можно просто добавить эту строку в свой код, и тогда V_v_n и Vovan смогут жить дружно на одном сайте.