Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Хаки » Выбор группы при регистрации DLE

Выбор группы при регистрации DLE


     11.07.2011    выбор группы, регистрация, хак, php    Все вопросы » Хаки    13307

вопрос
Расскажте пожалуйста немого о дополнительных полях при регистрации. Меня в частности интересует такая возможность. Можно ли сделать так, чтобы изимать какую небудь функцию из них. Ну допустим имели связь с созданными категориями. К примеру, я создаю дополнительные поля в виде списка (список - 1, 2, 3, 4, 5), списки эти хочу связать с категориями новостей, пользователь при регистрации выбирает №3 из списка и ему на главной (или ещё где) в отдельном блоке высвечиваются новости из категории новостей №3. ? Может тегом кастом, или ещё как подобное реализуется? В общем мне очень интересна возможность дополнительных полей при регистрации. Благодарю.

Ответил: ПафНутиЙ


Предложу вот такой вариант:

При регистрации на DLE-сайте пользователь выбирает группу, а в шаблоне уже используем теги [group= ]

Итак даю инструкцию:

1. открываем: /engine/modules/register.php
Ищем
$tpl->set( '[registration]', "" );
Вставляем выше

$group_select = '';
$allow_group = array(3,4); // Группы доступные при регистрации
foreach ( $allow_group as $id ) {
$group = $user_group[$id];
$group_select .= '<option value="' . $group['id'] . "\">" . $group['group_name'] . "</option>\n";
}
$tpl->set( '{group}', "<select name=\"group\">".$group_select."</select>" );
Ищем (будет найдено 2 вхождения)
rawurlencode( base64_encode( $name . "||" . $email . "||" . md5( $password1 ) . "||" . md5( md5( $name . $email . DBHOST . DBNAME . $config['key'] ) )

Вставляем далее
. "||" . (int)$_POST['group']

Ищем
$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 . "')" );

Меняем на


$allow_group = array(3,4); // Группы доступные при регистрации
$user_arr[4] = intval($user_arr[4]);
if(!in_array($user_arr[4], $allow_group)) $user_arr[4] = 4; // Группа по умолчанию
$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', '" . $user_arr[4] . "', '', '', '', '', '" . $_IP . "')" );


2. Редактируем шаблон. ./templates/[имя шаблона]/registration.tpl

в нужное место вставляем тег {group} и радуемся жизни.



ВНИМАНИЕ. Способ будет работать только для новых пользователей. Тестировалось на DLE 8.5-9.0 но и на других должно идти.



Ещё можно организовать через допполя в профиле и jQuery, но это с практической точки зрения сложнее.

30 комментариев

XTTP
Юзер

XTTP - 7 декабря 2011 04:35 -

ПафНутиЙ

Подскажите пожалуйста как добавить правильно парочку id групп в моем случае чтоб был выбор между id5 и id6 ,мучаюсь уже 4часа весь интернет перерыл ... но к сожалению я ничего не понимаю в пхп :(

nowheremany
Эксперт

nowheremany - 19 августа 2012 00:51 -

подправил
errrrrrrrrrrrrrrrrrrrrrrrrrrr

Благодарность принимаю тут Связь

timurtt
Юзер

timurtt - 19 ноября 2012 02:38 -

извиняюсь, но я понял это решение правильно..?

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

интересуюсь потому что нужно как раз такое решение что бы перед регистрацией пользователь сначала выбрал какой группе он относится. к примеру в моем случае это:

-частное лицо
-компания

так будет?

если кто сможет помочь платно напишите...

ПафНутиЙ
Админ

ПафНутиЙ - 19 ноября 2012 07:48 -

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

Каков вопрос - таков и ответ. Просто помните об этом.

timurtt
Юзер

timurtt - 19 ноября 2012 21:09 -

да же если доступно всем тут дело не в полях а как это можно сделать так что бы в несколько шагов в модальном окне и при помощи ajax. что бы все переход в следующий шаг был без перезагрузки.

ПафНутиЙ
Админ

ПафНутиЙ - 19 ноября 2012 21:39 -

стол заказов или фрилансеры )

Каков вопрос - таков и ответ. Просто помните об этом.

Aleks_Ku
Юзер

Aleks_Ku - 20 декабря 2012 14:24 -

Подправил код до рабочей кондиции)) Переменные забыл указать в коде =))


Не правильный код


В итоге код рабочий проверил на DLE 9.7 автору спасибо. Использую для сайта Веб-студии копирайта и рерайта укротова.рф

ПафНутиЙ
Админ

ПафНутиЙ - 11 апреля 2013 23:34 -

Поправил ответ

Каков вопрос - таков и ответ. Просто помните об этом.

Yurets
Юзер

Yurets - 27 октября 2013 20:04 -

DLE 10.0

Ошибка ID not valid!

Yurets
Юзер

Yurets - 7 ноября 2013 23:03 -

нашел выход для DLE 10.0

Установка:
1. Открыть engine/modules/register.php и найти:
$path = parse_url( $config['http_home_url'] );

Добавить ниже:
$tpl->set( '{group-select}', "
<select name='user_group'>
<option value='2'>User Group ID 2</option>
<option value='3'>User Group ID 3</option>
<option value='4'>User Group ID 4</option>
</select>
");

Найти еще:
if( intval( $config['reg_group'] ) < 3 ) $config['reg_group'] = 4;

Заменить на:
if( !empty( $_POST['user_group'] ) ) $config['reg_group'] = intval( $_POST['user_group'] );


2. Открыть файл шаблона registration.tpl и в нужном месте добавить:
<tr>
<td class="label">Выберите группу:<span class="impot">*</span></td>
<td>{group-select}</td>
</tr>

Готово!

dim
Юзер

dim - 3 января 2014 15:06 -

Yurets, у вас точно работает на DLE 10.0? Тот код, что вы написали нужно использовать вместе или вместо кода от ПафНутиЯ?

dim
Юзер

dim - 1 января 2014 12:48 -

Насколько я понял, предложенный вариант в ответе не предназначен для регистрации пользователя в определенной группе, поскольку при выборе группы отличной от "пользователя" зарегистрировавшийся всего равно попадает в группу пользователей. Я верно понимаю?

ПафНутиЙ
Админ

ПафНутиЙ - 3 января 2014 11:18 -

Нет, хак предназначен именно для регистрации пользователя в определённую группу. Возможно он просто устарел или неправильно установлен (первое более вероятно).

Каков вопрос - таков и ответ. Просто помните об этом.

pogorelov
Юзер

pogorelov - 12 января 2014 10:39 -

ваш скрипт выдает "ID not valid!". Возможно, я допустил ошибку при вставке . "||" . (int)$_POST['group'] - куда именно нужно его вставить?
Касательно скрипта Yurets: его нужно использовать вместе с вашим или отдельно?

dim
Юзер

dim - 12 января 2014 12:46 -

pogorelov, попробуйте отдельно, у меня получилось на DLE 10.0.

aldadis
Юзер

aldadis - 28 февраля 2014 01:04 -

Кто подскажет как на 10.1 реализовать?
Способы выше не работают, группы выводятся но регистрация производится в группу "Посетители".

Спасибо.

oazet
Юзер

oazet - 4 апреля 2014 10:23 -

На версии движка 10,2 на втором шаге правки кода (вариант Пафнутия), получится такая вот строка:
rawurlencode( base64_encode( $name . "||" . $email . "||" . md5( $password1 ) . "||" . sha1( $name . $email . $stronghash . $config['key']  ). "||" . (int)$_POST['group'] ) );

Тоесть нужно правильно вставить:
. "||" . (int)$_POST['group']

и всё работает.

_123
Юзер

_123 - 8 мая 2014 23:03 -

oazet,у меня вообще не работает и ваш код и Пафнутия.Пишит следущее:
Parse error: syntax error, unexpected ']' in /home/u445210128/public_html/engine/modules/register.php on line

_123
Юзер

_123 - 8 мая 2014 23:04 -

у меня dle 10.2

zikwal
Юзер

zikwal - 12 июня 2015 17:09 -

_123,
Там же написано, что у ВАС ошибка, А не у Пафнутия.

Если у вас не работает, то именно ВЫ что-то сделали не правильно.

P.S.
DLE 10.4 - Все работает!
(Только можно поставить только 2 группы (3 или 4, почему то не работают, но в описании и написано - 2 группы, так что)

vaniya92
Юзер

vaniya92 - 7 апреля 2016 09:27 -

Здравствуйте, подскажите, можно ли сделать, чтобы выбиралось между 3 группами? А то после последнего комментария появились сомнения. И будет ли работать на ДЛЕ 11?

vaniya92
Юзер

vaniya92 - 14 апреля 2016 22:03 -

Не хочет работать на DLE 11, кажет ID not valid! при выборе группы отличной от "Посетители"

vaniya92
Юзер

vaniya92 - 14 апреля 2016 22:38 -

Хотя нет, все работает, спасибо пользователю oazet за подсказку

19mix91
Юзер

19mix91 - 21 сентября 2016 14:17 -

oazet,
Спасибо за подсказку все заработало ! 11.0

Kloun1990
Юзер

Kloun1990 - 20 апреля 2017 18:18 -

Огромное спасибо! Всё прекрасно работает на 11.2!

Gera
Юзер

Gera - 22 сентября 2019 20:20 -

Как на 13 dle сделать?

Gera
Юзер

Gera - 27 сентября 2019 12:38 -

Ошибка ID not valid! на dle 13.2 как быть ?

dj-avtosh
PHP-developer

dj-avtosh - 27 сентября 2019 18:36 -

Не верю, что в dle 13.2 у Вас были такие вхождения:


rawurlencode( base64_encode( $name . "||" . $email . "||" . md5( $password1 ) . "||" . md5( md5( $name . $email . DBHOST . DBNAME . $config['key'] ) )

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

dj-avtosh
PHP-developer

dj-avtosh - 27 сентября 2019 18:41 -

Судя по всему для 13 DLE (может даже и для 12) нужно найти (2 раза):

rawurlencode( base64_encode( $name . "||" . $email . "||" . $password1 . "||" . sha1( $name . $email . $stronghash . $config['key'] ) ) );


Заменить на

rawurlencode( base64_encode( $name . "||" . $email . "||" . $password1 . "||" . sha1( $name . $email . $stronghash . $config['key'] ) . "||" . (int)$_POST['group'] ) );

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

krasgaming
Юзер

krasgaming - 4 мая 2021 11:09 -

Приветствую! Еще актуально здесь задавать вопросы? Пробовал установить на dle 14.2, в регистрации появился выбор групп, но при завершение регистрации выскакивает ошибка: ID not valid!

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх