Перейти к контенту

Двойная валидация: проверка мыла и ручная проверка


Рекомендуемые сообщения

Вот делаю мод - очень мне лично нужный - это двойная проверка регистрирующихся. Как известно, в 2.0 можно либо организовать проверку емейла пользователем (после чего у него становится полный доступ), либо ручную проверку админом.

 

Данный мод позволяет комбинировать оба способа. Зачем это нужно. Ручная проверка - это актуально в случае повышенной безопасности форума, "закрытого" форума , куда пускают не всех. Однако, довольно тяжело заниматься вручную проверкой пользовательских емейл-адресов, поэтому данный мод актуален.

 

Дополнительно хочу отметить тот факт, что IPB собирается включить данную фичу в свой новый 2.1.

 

Итак. Модификация достаточно простая, состоит из четырех шагов.

 

Шаг 1. SQL

Добавить новое поле-флаг в таблицу валидаций, которое будет означать, осуществлена ли проверка мыла юзера

ALTER TABLE ibf_validating ADD email_ok TINYINT( 1 ) NOT NULL;

Примечание: префикс "ibf_" замените на свой, если он у вас отличается от стандартного.

 

 

Шаг 2. sources/register.php

Найти

// REGISTER VALIDATE

 

Чуть ниже найти

if (empty($validate['real_group']))

 

ВЫШЕ добавить:

/*

 

Далее найти:

$DB->simple_exec_query( array( 'delete' => 'validating', 'where' => "vid='".$validate['vid']."' OR (member_id={$member['id']} AND new_reg=1)" ) );

 

НИЖЕ добавить:

*/
//force double validation:
$DB->query("UPDATE ".SQL_PREFIX."validating SET email_ok='1' WHERE vid='".$validate['vid']."' OR (member_id={$member['id']} AND new_reg=1)");

 

Далее найти:

$std->boink_it($ibforums->base_url.'&act=Login&CODE=autologin&fromreg=1');

 

ЗАМЕНИТЬ на следующее:

//$std->boink_it($ibforums->base_url.'&act=Login&CODE=autologin&fromreg=1');
$this->output = "Шаг проверки вашего email адреса завершен. Теперь администратор должен выполнить ручную проверку вашего аккаунта, по окончанию которой вы получите дополнительное уведомление. Пока вы еще не имеете полных прав на доступ, ожидайте ручной проверки.<br /><br /><a href='".$ibforums->base_url."&act=Login&CODE=00'>Вход</a>";
$this->page_title = $ibforums->lang['activation_form'];
$this->nav = array( $ibforums->lang['activation_form'] );

 

 

Шаг 3. /sources/admin/ad_member.php

Найти

function view_mod()

 

Чуть ниже найти:

case 'email':
      $col = 'm.email';

 

ЗАМЕНИТЬ на:

case 'email':
      //$col = 'm.email';
      //double validation: sort by field "is email checked?"
      $col = 'v.email_ok';

 

Далее найти:

$where = ( $r['lost_pass'] ? 'Lost Password' : ( $r['new_reg'] ? "Registering" : ( $r['email_chg'] ? "Email Change" : 'N/A' ) ) );

 

НИЖЕ добавить:

//double validation: mark
$email_ok_1=""; 
$email_ok_2="";
if (!$r['lost_pass']) {
if ($r['email_ok'] == 1) 
{ 
$email_ok_1 = "<b><font style='background-color: green; color: white'>";
$email_ok_2 = "</font><br><font color=green>АДРЕС ПРОВЕРЕН</font></b>"; 
} else { 
$email_ok_1 = "<b><font style='background-color: red; color: white'>";
$email_ok_2 = "</font><br><font color=red>АДРЕС НЕ ПРОВЕРЕН</font></b>"; 
}
}

 

Далее найти:

$r['email'],

 

ЗАМЕНИТЬ на:

$email_ok_1.$r['email'].$email_ok_2,

 

 

Шаг 4. Войти в админцентр

View All General Settings / Security and Privacy

В настройке "New registration email validation?"

установить значение: "User email validation"

 

Все.

Теперь пользователю будет уходить письмо активации, после завершения которой, в списке валидации его емейл будет отображаться зеленым (в противном случае - красным).

 

Предложения, исправления и добавления охотно принимаются :D

Ссылка на комментарий
Поделиться на других сайтах

  • 7 месяцев спустя...

Anna

Значит в этом случае,если пользователь введёт несуществующий емэйл,то не сможет подтвердить регистрацию?

Ссылка на комментарий
Поделиться на других сайтах

Разумеется, если, конечно, он не телепат и не сможет подобрать md5-ный хэш из 32 символов :D

 

А тебе остается только проверять тех, у кого в админке емейл помечен зеленым маркером.

Ссылка на комментарий
Поделиться на других сайтах

я сделал иначе

1. поставил срок активации 3 дня

2. написал скрипт, который залезает в почтовик и выдирает оттуда всю инфу из письма и выдает список раз в неделю (все что в списке ответов почтового сервака вызывает подозрение удаляется из очереди активации)

3. существующие пользователи форума тоже подвергаются проверке таким скриптом и если е-майл пользователя перестал работать и об этом говорят уведомления почтовика, то считается число вхождений ошибки .... после 3-го юзера перекидываю в особую группу "безответственных" с уведомлением в ЛС. Если в течение недели +- 1-2 дня никто не побеспокойлся, то удаляю все из базы и дело с концом.

 

В данный момент проверка итогов недели занимает 20-25 минут времени при базе пользователей, которая выросла за год примерно до 3000 участников.

 

Проблема в том, что почтовые ящики при регистрации может быть и работают, но потом имеют свойство меняться и "умирать", а зная халатное отношение среднестатистического пользователя к своему аккаунту и его параметрам, а также его работоспособности, могу предложить пойти дальше и сделать проверку валидации всех пользователей существующих в базе, это конечно создаст большой поток писем при большой БД. Но его можно размазать по времени ... но таким образом будет выявлено некоторое число мертвой почты, которое придется потом фильтровать ... разгребать логи ошибок почтовика тоже занятие не из приятных. Вот если бы его удалось автоматизировать.

 

Вопрос очень актуальный для больших форумов. За идею мода спасибо! Вещь нужная.

Ссылка на комментарий
Поделиться на других сайтах

Anna

А если я подтвержу того,кто выделен красным,то он получит доступ на форум или нет?

Ссылка на комментарий
Поделиться на других сайтах

Благодаря установке мода заметил,что у меня с форума юзером на мыло ничего не шлётся и оказывается уже с начала ноября.В чём может быть проблема?
Ссылка на комментарий
Поделиться на других сайтах

Anna

А если я подтвержу того,кто выделен красным,то он получит доступ на форум или нет?

 

Конечно получит. Никаких проблем не будет.

 

Благодаря установке мода заметил,что у меня с форума юзером на мыло ничего не шлётся и оказывается уже с начала ноября.В чём может быть проблема?

 

Значит что-то криво поставил. Либо неправильно настроил вот это....

Проверь, что у тебя выполнен ШАГ 4 из указаний по установке.:

 

Шаг 4. Войти в админцентр
View All General Settings / Security and Privacy
В настройке "New registration email validation?"
установить значение: "User email validation"

Изменено пользователем Anna
Ссылка на комментарий
Поделиться на других сайтах

Anna

Да всё правильно,у меня и старые файлы тоже самое выдают.Просто никому ничего от форума на мыло не приходит.В настройках мэйла стоит отсылка через PHP Mail.

Ссылка на комментарий
Поделиться на других сайтах

  • 1 месяц спустя...

Недавно перешёл на 2.1.3 и теперь данный мод не работает,все подтверждаются мылом без одобрения админа.

 

Как полностью отменить этот мод?

Ссылка на комментарий
Поделиться на других сайтах

Мод находится в файлах, а файлы вы уже заменили, так что мод у вас отсутствует.

Тип проверки (емейл или ручная) настраивается в админке в настройках (где это в 2.1 понятия не имею).

Ссылка на комментарий
Поделиться на других сайтах

Anna

Ну в админке стоит подтверждение Админом,но они без моего разрешения попадают на форум и постят.

Ссылка на комментарий
Поделиться на других сайтах

Мой мод не позволяет пользователям попадать на форум без санкции администратора вне зависимости от того, какой вариант валидации установлен - в этом его смысл и именно так он работает.

 

1. Ситуация, которую вы описываете никоим образом невозможна в версии форума 2.0.х.

2. При обновлении форума с 2.0.х на 2.1.х вы должны быть удалить все старые файлы и залить новые, поэтому мод вы мой удалили сами, при апгрейде.

3. Если у вас установлен мой мод под версию 2.1.х, то я не могу предсказать его поведение, т.к. совместимость моего мода - 2.0.х.

 

Поэтому, проблема которую вы описываете, не есть проблема данного мода. Вы должны задавать этот вопрос не в этой теме, а в общих вопросах по 2.1.х.

 

Единственное что я могу вам рекомендовать - это проверить значение соответствующей настройки в базе данных, действительно ли там стоит нужный режим, а так же перезалить все админские файлы и файлы отвечающие за регистрацию пользователей (в 2.1.х., уж извините, я ничего не понимаю и не могу сказать какие именно).

Ссылка на комментарий
Поделиться на других сайтах

  • 8 месяцев спустя...
  • 1 месяц спустя...

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.