Хак Новое обязательное поле при регистрации на сайте

Тема в разделе "DLE", создана пользователем dragonstyle, 10 май 2009.

Информация :
Актуальная версия DataLife Engine 12.0
( Final Release v.12.0 | Скачать DataLife Engine | Скачать 12.0 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 11.3 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Статус темы:
Закрыта.
Модераторы: killoff
  1. dragonstyle

    dragonstyle Читатель

    Заблокирован
    Регистр.:
    17 ноя 2008
    Сообщения:
    524
    Симпатии:
    479
    Многие задаются вопросом, как же сделать новое поле при регистрации, обязательное к заполнению...
    Покажу, как это делается на примере добавления и выбора из списка версий Фотошопа...
    Скрины:

    Форма при регистрации:
    [​IMG]
    Вид комментариев:
    [​IMG]
    Вид профиля:
    [​IMG]
    Редактирование профиля:
    [​IMG]
    Установка:
    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'] ) );
    Ищем:
    Код:
    $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}
    Вроде бы всё... Хак очень легко изменить под свои нужды...
    Теперь кричим: NULLED.WS Я ЛЮБЛЮ ТЕБЯ!
    :yahoo:
     
    NuT-777, Edwardius, viktor6 и 3 другим нравится это.
  2. OffSpEEd

    OffSpEEd

    Регистр.:
    17 авг 2007
    Сообщения:
    159
    Симпатии:
    19
    а где скрины вначале?
     
  3. Demon425

    Demon425

    Регистр.:
    9 июл 2008
    Сообщения:
    461
    Симпатии:
    116
    Вот источник, там же и скрины есть ...
    http://4dle.ru/hacks/1147157405-novoe-objazatelnoe-pole-pri-registracii.html
     
  4. pozerovnet

    pozerovnet

    Регистр.:
    31 янв 2008
    Сообщения:
    400
    Симпатии:
    11
    А как можно гибрид этой штуки, т.е. например я хочу, что бы человек писал свой номер телефона (если сайт в сети и это чисто для своих), НО чт б у него был выбор, написать номер (чисто цифры, что бы буквы не воспринимали, а ля: Фиг вам, а не мой номер) или выбрать пункт: Нет телефона
    ???
     
  5. GSMtricks

    GSMtricks Постоялец

    Регистр.:
    7 дек 2006
    Сообщения:
    56
    Симпатии:
    3
    Ставил себе этот мод, помучался пока заточил под 8 версию, заработало. А в итоге увидел что в DLE 8 данная функция уже реализована в движке. То есть из админки можно настроить любое новое обязательно поле при регистрации. Так что владельцы 8 версии - не спешите ставить мод, смотрите админку.
     
  6. pozerovnet

    pozerovnet

    Регистр.:
    31 янв 2008
    Сообщения:
    400
    Симпатии:
    11
    Никто даже за мат. поддержку не поможет?
     
  7. Demon425

    Demon425

    Регистр.:
    9 июл 2008
    Сообщения:
    461
    Симпатии:
    116
    Пункт 6А:
    Код:
    <input type="text" name="addpolereg" value="{addpolereg}" class="f_input" />
    По поводу номера:
    Код:
    $nomer = intval($nomer);
    т.е. тут номер может принять значение только циферное (0123456789, остальные символы не доступны)
     
  8. SourCream

    SourCream

    Регистр.:
    27 фев 2009
    Сообщения:
    227
    Симпатии:
    24
    Ну а что там помогать ? Вроде все понятно... Ну если надумаеш то напиши в личку и состыкуемся... Помогу за спасибо :)
     
  9. pozerovnet

    pozerovnet

    Регистр.:
    31 янв 2008
    Сообщения:
    400
    Симпатии:
    11
    Он вообще нормально становится?

    MySQL Error!
    ------------------------

    The Error returned was:
    Column count doesn't match value count at row 1

    Error Number:
    1136

    Мускул ругается :/
    п.с. $nomer = intval($nomer); - это куда вставить?
     
  10. LaEDGE

    LaEDGE Создатель

    Регистр.:
    24 июл 2009
    Сообщения:
    27
    Симпатии:
    0
    а можете пояснить как организовать необязательное поле, но с запросом значения переменной из строки адреса?
     
Статус темы:
Закрыта.