• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела killoff лично.

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

Статус
В этой теме нельзя размещать новые ответы.

dragonstyle

Читатель
Заблокирован
Регистрация
17 Ноя 2008
Сообщения
523
Реакции
481
  • Автор темы
  • Заблокирован
  • #1
Многие задаются вопросом, как же сделать новое поле при регистрации, обязательное к заполнению...
Покажу, как это делается на примере добавления и выбора из списка версий Фотошопа...
Скрины:

Форма при регистрации:
1241559121_forma-pri-registracii.jpg

Вид комментариев:
1241559226_vid-kommentariev.jpg

Вид профиля:
1241559295_vid-profilja.jpg

Редактирование профиля:
1241559334_redaktirovanie-profilja.jpg

Установка:
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:
 
а где скрины вначале?
 
А как можно гибрид этой штуки, т.е. например я хочу, что бы человек писал свой номер телефона (если сайт в сети и это чисто для своих), НО чт б у него был выбор, написать номер (чисто цифры, что бы буквы не воспринимали, а ля: Фиг вам, а не мой номер) или выбрать пункт: Нет телефона
???
 
Ставил себе этот мод, помучался пока заточил под 8 версию, заработало. А в итоге увидел что в DLE 8 данная функция уже реализована в движке. То есть из админки можно настроить любое новое обязательно поле при регистрации. Так что владельцы 8 версии - не спешите ставить мод, смотрите админку.
 
Никто даже за мат. поддержку не поможет?
 
Пункт 6А:
Код:
<input type="text" name="addpolereg" value="{addpolereg}" class="f_input" />
По поводу номера:
Код:
$nomer = intval($nomer);
т.е. тут номер может принять значение только циферное (0123456789, остальные символы не доступны)
 
Он вообще нормально становится?

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

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

Error Number:
1136

Мускул ругается :/
п.с. $nomer = intval($nomer); - это куда вставить?
 
а можете пояснить как организовать необязательное поле, но с запросом значения переменной из строки адреса?
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху