Перейти к публикации

Обязательное дополнительное поле при регистрации


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

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

На просторах интернета нашел что нужно сделать, но это видимо для старых версий

Помогите исправить чтобы работало на 9.5

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

Вот схема того что я нашел:


Установка:

1.

Выполняем sql-запрос:

ALTER TABLE `dle_users` ADD `addpolereg` VARCHAR( 30 ) CHARACTER SET cp1251 COLLATE cp1251_general_ci NOT NULL;


2.

Открываем engine/modules/register.php

Ищем:

function check_reg($name, $email, $password1, $password2, $sec_code = 1, $sec_code_session = 1) {

Заменяем на:

function check_reg($name, $addpolereg, $email, $password1, $password2, $sec_code = 1, $sec_code_session = 1) {


а) Для ручного набора информации (для выбора из списка пропускаем):

Ищем:

if( strlen( $name ) > 20 ) $stop .= $lang['reg_err_3'];

Добавляем ниже:

if (strlen($addpolereg) > 30) $stop .= "<li>Не менее 30 символов. Например Adobe Photoshope x.x</li>";

if (strlen($addpolereg) < 3) $stop .= "<li>Не менее 3 символов. Например Adobe Photoshope x.x</li>";


Ищем:

$name = $db->safesql($parse->process(htmlspecialchars(trim($_POST['name']))));

Добавляем ниже:

$addpolereg = $db->safesql($parse->process($_POST['addpolereg']));


Ищем:

$reg_error = check_reg( $name, $email, $password1, $password2, $sec_code, $sec_code_session );

Заменяем на:

$reg_error = check_reg( $name, $addpolereg, $email, $password1, $password2, $sec_code, $sec_code_session );


Ищем:

$reg_error = check_reg( $name, $email, $regpassword, $regpassword );

Заменяем на:

$reg_error = check_reg( $name, $addpolereg, $email, $regpassword, $regpassword );


Ищем:

$db->query( "INSERT INTO " . USERPREFIX . "_users (name, password, email, reg_date, lastdate, user_group, info, signature, favorites, xfields, logged_ip) VALUES ('$name', '$regpassword', '$email', '$add_time', '$add_time', '" . $config['reg_group'] . "', '', '', '', '', '" . $_IP . "')" );

Заменяем на:

$db->query( "INSERT INTO " . USERPREFIX . "_users (name, password, addpolereg, email, reg_date, lastdate, user_group, info, signature, favorites, xfields, logged_ip) VALUES ('$name', '$regpassword', '$addpolereg', '$email', '$add_time', '$add_time', '" . $config['reg_group'] . "', '', '', '', '', '" . $_IP . "')" );


3.

Открываем engine/modules/profile.php

Ищем:

$tpl->set( '{usertitle}', stripslashes( $row['name'] ) );

Добавляем ниже:

$tpl->set( '{addpolereg}', stripslashes( $row['addpolereg'] ) );


Ищем:

$stop = false;

Добавляем ниже:

$addpolereg = $db->safesql( $parse->process( $_POST['addpolereg'] ) );

Ищем:

$password1 = md5( md5( $password1 ) );

			$sql_user = "UPDATE " . USERPREFIX . "_users set fullname='$fullname', land='$land', icq='$icq', email='$email', info='$info', signature='$signature', password='$password1', allow_mail='$allow_mail', xfields='$filecontents', allowed_ip='$allowed_ip' where name='$user'";


		} else {


			$sql_user = "UPDATE " . USERPREFIX . "_users set fullname='$fullname', land='$land', icq='$icq', email='$email', info='$info', signature='$signature', allow_mail='$allow_mail', xfields='$filecontents', allowed_ip='$allowed_ip' where name='$user'";


		}

Заменяем на:

$password1 = md5( md5( $password1 ) );

			$sql_user = "UPDATE " . USERPREFIX . "_users set fullname='$fullname', addpolereg='$addpolereg', land='$land', icq='$icq', email='$email', info='$info', signature='$signature', password='$password1', allow_mail='$allow_mail', xfields='$filecontents', allowed_ip='$allowed_ip' where name='$user'";


		} else {


			$sql_user = "UPDATE " . USERPREFIX . "_users set fullname='$fullname', addpolereg='$addpolereg', land='$land', icq='$icq', email='$email', info='$info', signature='$signature', allow_mail='$allow_mail', xfields='$filecontents', allowed_ip='$allowed_ip' where name='$user'";


		}


4.

Открываем engine/modules/show.full.php

Ищем:

USERPREFIX . "_users.email, news_num, comm_num, user_group, reg_date, signature,

Заменяем на:

USERPREFIX . "_users.email, news_num, comm_num, user_group, reg_date, signature, addpolereg,


Ищем:

$tpl->set( '{comm-num}', intval( $row['comm_num'] ) );

Добавляем ниже:

$tpl->set( '{addpolereg}', $row['addpolereg'] );


5.

Открываем engine/modules/lastcomments.php

Ищем:

USERPREFIX . "_users.email, news_num,

Заменяем на:

USERPREFIX . "_users.email, news_num, skype, addpolereg,


Ищем:

$tpl->set( '{comm-num}', intval( $row['comm_num'] ) );

Добавляем ниже:

$tpl->set( '{addpolereg}', $row['addpolereg'] );


6.

Открываем templates/{Ваш шаблон}/registration.tpl

а) Для ручного набора информации:

В нужном месте вставляем

<input type="text" name="addpolereg" id='addpolereg' style="width:167px; height:20px; font-family:tahoma; font-size:11px; border:1px solid #E0E0E0;" />


б) Для выбора из списка:

В нужном месте вставляем

<tr>

<td height="25">Версия Фотошопа:</td>

<td colspan="2"><select name="addpolereg" id="addpolereg" value="{addpolereg}">

<option value="Adobe Photoshop 11 (CS 4)">Adobe Photoshop 11 (CS 4)</option>

<option value="Adobe Photoshop 10 (CS 3)">Adobe Photoshop 10 (CS 3)</option>

<option value="Adobe Photoshop 9 (CS 2)">Adobe Photoshop 9 (CS 2)</option>

<option value="Adobe Photoshop 8 (CS)">Adobe Photoshop 8 (CS)</option>

<option value="Adobe Photoshop 7">Adobe Photoshop 7</option>

</td>

</tr>


7.

Открываем templates/{Ваш шаблон}/userinfo.tpl

В нужном месте вставляем (для вывода информации)

<br><b>Версия Фотошопа: </b>{addpolereg}


Там же в редактировании профиля в удобном месте добавляем:

а) Для ручного набора информации:

<input type="text" name="addpolereg" value="{addpolereg}" class="f_input" />


б) Для выбора из списка:

<tr>

<td height="25"><b>Версия Фотошопа:</b></td>

<td colspan="2"><select name="addpolereg" id="addpolereg" value="{addpolereg}">

<option value="Adobe Photoshop 11 (CS 4)">Adobe Photoshop 11 (CS 4)</option>

<option value="Adobe Photoshop 10 (CS 3)">Adobe Photoshop 10 (CS 3)</option>

<option value="Adobe Photoshop 9 (CS 2)">Adobe Photoshop 9 (CS 2)</option>

<option value="Adobe Photoshop 8 (CS)">Adobe Photoshop 8 (CS)</option>

<option value="Adobe Photoshop 7">Adobe Photoshop 7</option>

</td>

</tr>


7.

Открываем templates/{Ваш шаблон}/comments.tpl

В нужном месте вставляем (для вывода информации)

<br><b>Версия Фотошопа: </b>{addpolereg}


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

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

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

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

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

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

×
×
  • Создать...