FatCat Опубликовано 23 Января 2007 Жалоба Поделиться Опубликовано 23 Января 2007 (изменено) Внимание! По всему тексту в слове javascript сходные по написанию буквы написаны русскими; не пытайтесь тупо копировать код! 1.3 skin_register.php Сначала вывод предупреждения, что для успешной регистрации требуется джава-скрипт, и создание скрытого поля: Находим код:<form action="{$ibforums->vars['board_url']}/index.{$ibforums->vars['php_ext']}" method="post" name='REG' onsubmit='return Validate()'> <input type='hidden' name='act' value='Reg' /> <input type='hidden' name='CODE' value='02' /> <input type='hidden' name='coppa_user' value='{$data['coppa_user']}' /> <b>{$ibforums->lang['reg_header']}</b><br /><br />{$data['TEXT']} <br /> <br /> <div class="tableborder">Заменяем на:<form action="{$ibforums->vars['board_url']}/index.{$ibforums->vars['php_ext']}" method="post" name='REG' onsubmit='return Validate()'> <input type='hidden' name='act' value='Reg' /> <input type='hidden' name='CODE' value='02' /> <input type='hidden' name='coppa_user' value='{$data['coppa_user']}' /> <input type='hidden' name='check_bot' id='check_bot' value='1' /> <b>{$ibforums->lang['reg_header']}</b><br /><br />{$data['TEXT']} <br /> <script type="text/jаvаscript"> function valid(){ if(document.getElementById("check_bot")){ document.getElementById("check_bot").value = '0' } } </script> <noscript> <h2 style="color:Red">Обнаружена ошибка!<br>Для регистрации на форуме требуется поддержка джава-скрипт.</h2> </noscript> <br /> <div class="tableborder"> Итак, у нас появилось скрытое поле с именем check_bot со значением "1", есть функция valid(), преобразующая значение скрытого поля в "0", и есть сообщение, появляющееся, если у пользователя отключен джава-скрипт. В строку<input type='text' size='32' maxlength='64' value='{$ibforums->input['UserName']}' name='UserName' class='forminput' />добавляется обработчик события onfocus, получается код:<input type='text' size='32' maxlength='64' value='{$ibforums->input['UserName']}' name='UserName' class='forminput' onClick='jаvаscript:valid();' onKeyup='jаvаscript:valid();' onChange='jаvаscript:valid();' onFocus='jаvаscript:valid();' /> Если используется несколько скинов, повторить для всех (или проверить, что изменен дефолтный скин). Теперь вывод сообщения об ошибке для ботов и для тех, кто решил регистрироваться без джавы. Файл Register.php:После if ($ibforums->input['EmailAddress_two'] != $in_email) { $this->show_reg_form('err_email_address_match'); return; }добавляем:if ( $ibforums->input['check_bot'] != "0" ) { $this->show_reg_form('err_check_bot'); return; } Файл lang_register.php:В массив добавляем:'err_check_bot' => "<big>Для регистрации необходима поодержка джава-скрипт браузером.</big>", 2.1.Х Внешний вид => стандартный стиль => изменить HTML-фрагменты => Register => ShowForm Находим:<input type="hidden" name="coppa_user" value="{$data['coppa_user']}" /> <div class="borderwrap"> Заменяем на:<input type="hidden" name="coppa_user" value="{$data['coppa_user']}" /> <input type='hidden' name='check_bot' id='check_bot' value='1' /> <script type="text/jаvаscript"> function valid(){ if(document.getElementById("check_bot")){ document.getElementById("check_bot").value = '0' } } </script> <noscript> <h2 style="color:Red">Обнаружена ошибка!<br>Для регистрации на форуме требуется поддержка джава-скрипт.</h2> </noscript> <div class="borderwrap"> Ниже находим:<input type="text" size="50" maxlength="64" value="{ipb.input['UserName']}" id='reg-name' name="UserName" /> Заменяем на:<input type="text" size="50" maxlength="64" value="{ipb.input['UserName']}" id='reg-name' name="UserName" onClick="jаvаscript:valid();" onKeyup="jаvаscript:valid();" onChange="jаvаscript:valid();" onFocus="jаvаscript:valid();" /> lang_register.php После кода:'err_reg_code' => "Код регистрации не соответствует отображенному. Сгенерирован новый код регистрации. Повторите попытку.", Добавить:'err_reg_bot' => "Для успешной регистрации требуется поддержка джава-скрипт браузером.", register.php Найти: if ( trim( intval($this->ipsclass->input['reg_code']) ) != $row['regcode'] ) { $form_errors['general'][] = $this->ipsclass->lang['err_reg_code']; } Выше добавить: if ( trim( intval($this->ipsclass->input['check_bot']) ) != 0 ) { $form_errors['general'][] = $this->ipsclass->lang['err_reg_bot']; } ====================================17:05:2007:Исправлена ошибка в файерфоксе. Изменено 17 Мая 2007 пользователем FatCat Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 3 Февраля 2007 Жалоба Поделиться Опубликовано 3 Февраля 2007 2.1.хадминка - внешний вид - изменить HTML фрагменты - skin_register - ShowForm1.<form action="{ipb.vars['board_url']}/index.{ipb.vars['php_ext']}" method="post" name="REG" onsubmit="return validate_reg_form(event)"> <input type="hidden" name="act" value="Reg" /> <input type="hidden" name="termsread" value="1" /> <input type="hidden" name="agree_to_terms" value="1" /> <input type="hidden" name="CODE" value="02" /> <input type="hidden" name="coppa_user" value="{$data['coppa_user']}" /> <div class="borderwrap">--><script type="text/jаvаscript"> function valid(){ if(document.getElementById("check_bot")){ document.getElementById("check_bot").value = '0' } } </script> <noscript> <h2 style="color:Red">Обнаружена ошибка!<br>Для регистрации на форуме требуется поддержка джава-скрипт.</h2> </noscript> <form action="{ipb.vars['board_url']}/index.{ipb.vars['php_ext']}" method="post" name="REG" onsubmit="return validate_reg_form(event)"> <input type="hidden" name="act" value="Reg" /> <input type="hidden" name="termsread" value="1" /> <input type="hidden" name="agree_to_terms" value="1" /> <input type="hidden" name="CODE" value="02" /> <input type="hidden" name="coppa_user" value="{$data['coppa_user']}" /> <input type='hidden' name='check_bot' value='1' /> <div class="borderwrap">2.<input type="text" size="50" maxlength="64" value="{ipb.input['UserName']}" id='reg-name' name="UserName" />--><input type="text" size="50" maxlength="64" value="{ipb.input['UserName']}" id='reg-name' name="UserName" onfocus='jаvаscript:valid()'/> sources/action_public/register.phpПЕРЕД //----------------------------------------- // CHECK 2: Any errors (duplicate names, etc)? //----------------------------------------- if ( count( $form_errors ) ) { $this->show_reg_form( $form_errors ); return; }добавляем if ($this->ipsclass->input['check_bot'] != "0") { $form_errors['general'][] = $this->ipsclass->lang['reg_error_check_bot']; } cache/lange_cache/*/lang_register.phpпосле'reg_error_email_taken' => "Введенный e-mail уже используется другим пользователем",добавить'reg_error_check_bot' => "Для регистрации необходима поодержка джава-скрипт браузером.", теперь должно работать Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
xRay Опубликовано 3 Февраля 2007 Жалоба Поделиться Опубликовано 3 Февраля 2007 Ну и чем это ботам помешает? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
FatCat Опубликовано 3 Февраля 2007 Автор Жалоба Поделиться Опубликовано 3 Февраля 2007 только я почему то с выключенным яваскриптом в опере все равно могу зарегестрироваться(Попробуй. Джаваскрипт уже отключен анонимаусом. Ну и чем это ботам помешает?Бот - не человек, а программа.Бот не загружает страницы на экран, бот анализирует тег <form ... > и по результатам анализа генерирует запрос серверу.При анализе бот увидит <input type='hidden' name='check_bot' value='1' /> и передаст в запросе значение единичку.Совсем иное будет у пользователя-человека.Джаваскрипт отработает при фокусировке поля ввода логина (<input type="text" ... onfocus='jаvаscript:valid()'/>), и заменит значение на нолик. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 4 Февраля 2007 Жалоба Поделиться Опубликовано 4 Февраля 2007 updated: поправил инструкцию Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
FatCat Опубликовано 4 Февраля 2007 Автор Жалоба Поделиться Опубликовано 4 Февраля 2007 смотри мою инструкцию, может я чего пропустилЯ плохо знаю двушки.Если с отключенным джаваскриптом происходит регистрация, а не выброс на эррор - значит, скорее всего не в том файле или не в том месте сделана проверка значения скрытого поля. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Rainbowwolf Опубликовано 28 Апреля 2007 Жалоба Поделиться Опубликовано 28 Апреля 2007 Гм! Для 1.3 есть, для 2.1 естьА для 2.0.х??? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
DANMASTER Опубликовано 28 Апреля 2007 Жалоба Поделиться Опубликовано 28 Апреля 2007 А если пользователь сам отключил ява скрипт? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
FatCat Опубликовано 28 Апреля 2007 Автор Жалоба Поделиться Опубликовано 28 Апреля 2007 А если пользователь сам отключил ява скрипт?Он увидит большое красное предупреждение:Попробуй. Джаваскрипт уже отключен анонимаусом. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
DANMASTER Опубликовано 28 Апреля 2007 Жалоба Поделиться Опубликовано 28 Апреля 2007 Он увидит большое красное предупреждение:Дык что предупреждение.. Он не сможет даже зарегиться.. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
nannies Опубликовано 16 Мая 2007 Жалоба Поделиться Опубликовано 16 Мая 2007 А не подскажете! Почему-то в Firefox 2.0 не работает - когда вводишь данные - пишет - "Для регистрации необходима поддержка джава-скрипт браузером.", хотя все включено!В Эксплорере и в Опере работает! Это только у меня или у всех? Спасибо! Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
FatCat Опубликовано 16 Мая 2007 Автор Жалоба Поделиться Опубликовано 16 Мая 2007 А не подскажете! Почему-то в Firefox 2.0 не работает - когда вводишь данные - пишет - "Для регистрации необходима поддержка джава-скрипт браузером.", хотя все включено!На файерфоксе не проверял.Видимо все же придется мне поставить Firefox и тестить еще и под ним. Блин! Как я ненавижу Нетскейп и всех его последышей! UPD:Поставил, проверил.Проблема в строке:<input type='text' size='32' maxlength='64' value='' name='UserName' class='forminput' onfocus='java script:valid()' />Этот тупой браузер не понимает onfocus. ОК, маленькая заплатка для совместимости с файерфоксом:1.3: skin_register.phpНайти: <script language='javascript' type="text/javascript"> <!-- function Validate() { // Check for Empty fieldsНиже добавитьстроку:valid(); "Двушки" нет под рукой. Принцип тот же: в функцию проверки заполненности формы регистрации добавить вызов функции valid()... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
nannies Опубликовано 16 Мая 2007 Жалоба Поделиться Опубликовано 16 Мая 2007 Спасибо большое! (Просто фаяфокс - это 10% пользователей как правило!) Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
FatCat Опубликовано 16 Мая 2007 Автор Жалоба Поделиться Опубликовано 16 Мая 2007 nanniesНаписал заплатку, но в действии не было возможности проверить.Проверяйте. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
nannies Опубликовано 16 Мая 2007 Жалоба Поделиться Опубликовано 16 Мая 2007 Не, все равно не хочет!Тоже самое пишет! Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
nannies Опубликовано 17 Мая 2007 Жалоба Поделиться Опубликовано 17 Мая 2007 Может получится у Вас посмотреть как это можно поправить, чтобы работало?Был бы очень благодарен.Спасибо! Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
FatCat Опубликовано 17 Мая 2007 Автор Жалоба Поделиться Опубликовано 17 Мая 2007 Не, все равно не хочет!Тоже самое пишет!Черт!Сейчас на другом компьютере, опять нет файерфокса под рукой. ОК, давайте пойдем тем путем, которым пошли разработчики ИПБ в топиках: продублируем запросы разными обработчиками. Для "двушек":<input type="text" size="50" maxlength="64" value="{ipb.input['UserName']}" id='reg-name' name="UserName" />Заменяем на:<input type="text" size="50" maxlength="64" value="{ipb.input['UserName']}" id='reg-name' name="UserName" onClick="javascript:valid();" onKeyup="javascript:valid();" onChange="javascript:valid();" onFocus="javascript:valid();" /> Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
nannies Опубликовано 17 Мая 2007 Жалоба Поделиться Опубликовано 17 Мая 2007 У меня версия 1.2! Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
FatCat Опубликовано 17 Мая 2007 Автор Жалоба Поделиться Опубликовано 17 Мая 2007 У меня версия 1.2!Для 1.х: В строку<input type='text' size='32' maxlength='64' value='{$ibforums->input['UserName']}' name='UserName' class='forminput' />добавить 4 обработчика, чтобы получилось: <input type='text' size='32' maxlength='64' value='{$ibforums->input['UserName']}' name='UserName' class='forminput' onClick="javascript:valid();" onKeyup="javascript:valid();" onChange="javascript:valid();" onFocus="javascript:valid();" /> Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
nannies Опубликовано 17 Мая 2007 Жалоба Поделиться Опубликовано 17 Мая 2007 Таже ситуация! В эксплорере контрольно проверил - все Ок, а в Фаяфоксе - не хочет - тоже пишет! Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
FatCat Опубликовано 17 Мая 2007 Автор Жалоба Поделиться Опубликовано 17 Мая 2007 Мои извинения, что так долго разбирался. Поставил файрфокса на домашнем компьютере и все оттестировал в локалке.Оказывается, файерфокс не понимал name="check_bot"его нужно продублировать id="check_bot" Сейчас поправлю первый пост. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
nannies Опубликовано 18 Мая 2007 Жалоба Поделиться Опубликовано 18 Мая 2007 А у Вас все проходит?Я вроде все поменял, несколько раз попробовал - но все равно не хочет. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
FatCat Опубликовано 18 Мая 2007 Автор Жалоба Поделиться Опубликовано 18 Мая 2007 А у Вас все проходит?Я вроде все поменял, несколько раз попробовал - но все равно не хочет.Да, после правки кода файерфоксом зарегил новый ник на локальной копии. Установил на форум, там тоже пробно зарегистрировался. Можно проверить на www.vesvalo.net Файерфокс у меня последний, 2.0.3, может в этом дело? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
nannies Опубликовано 18 Мая 2007 Жалоба Поделиться Опубликовано 18 Мая 2007 Да! Точно! У Вас работает!Но у меня одно отличие - стоит проверка кода при регистрации.Только что убрал проверку кода - тоже заработало (УРА!), но хотелось бы чтобы с кодом работало!Получится? Спасибо! Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
FatCat Опубликовано 18 Мая 2007 Автор Жалоба Поделиться Опубликовано 18 Мая 2007 Только что убрал проверку кода - тоже заработало (УРА!), но хотелось бы чтобы с кодом работало!Получится?Не пойму, как проверка кода регистрации может влиять на работу джаваскрипта. Хотя... Если два разных объекта будут иметь одинаковый id, джаваскрипт вылетит с ошибкой.Проверьте, не использует ли код регистрации id="check_bot" или что-то подобное. Если использует - в моей модификации замените везде check_bot на check_botj или как-то еще, чтобы не было дублирования идов. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.