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

Помощь Регистрация в 1 шаг - как сделать ?

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

gruppastimul

Ваш
Регистрация
22 Окт 2006
Сообщения
800
Реакции
149
В дле регистрация идет в 2 шага

первый это
Для просмотра ссылки Войди или Зарегистрируйся
после нажатия на отправить

появляется второй шаг
Для просмотра ссылки Войди или Зарегистрируйся

как сделать - чтобы всё это выводилось в 1 шаг

и ещё - в добавок - как сделать некоторые поля обязательными для заполнения? (даже дополнительные поля профиля)
 
  • Заблокирован
  • #2
Это всё можно настроить в шаблоне registration.tpl

Попробуй всё что между тегами [validation]...[/validation] поместить в теги [registration]...[/registration]
 
В engine/modules/register.php есть такая функция function check_reg()

добавляем ей параметры принимаемые
~ 32 строка

было
PHP:
function check_reg ($name, $email, $password1, $password2, $sec_code=1, $sec_code_session=1) {

стало, например
PHP:
function check_reg ($name, $email, $password1, $password2, $fullname, $firm_name, $city, $phone, $fullinfo, $sec_code=1, $sec_code_session=1) {

ниже пишем условия по заполнению новых полей

ищем
PHP:
if (strlen($password1) < 6) $stop .= $lang['reg_err_2'];

вписываем что-то вроде
PHP:
if ($firm_name == "") $stop .= "<li>Необходимо указать имя организации.</li>";
	if (strlen($firm_name) > 50) $stop .= "<li>Название организации слишком длинное.</li>";
	if ($city == "") $stop .= "<li>Вы должны указать свой город.</li>";
	if (strlen($city) > 50) $stop .= "<font color=\"#ed1c24\">Klepcsovkin error!</font>";
	if ($phone == "") $stop .= "<li>Телефон не должен быть пустым.</li>";


ниже ищем обработку перменных
PHP:
if (isset($_POST['submit_reg'])) {

	if ($config['allow_sec_code'] == "yes") {
		$sec_code = $_POST['sec_code'];
		$sec_code_session = ($_SESSION['sec_code_session'] != '') ? $_SESSION['sec_code_session'] : false;
	} else {
		$sec_code = 1;
		$sec_code_session = 1;
	}

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


добавляем наши новые
PHP:
$firm_name = $db->safesql($parse->process($_POST['firm_name']));
$city = $db->safesql($parse->process($_POST['city']));
$phone = $db->safesql($parse->process($_POST['phone']));


далее ищем вызов функции check_reg() ДВА РАЗА
PHP:
$reg_error = check_reg ($name, $email, $password1, $password2, $sec_code, $sec_code_session);

добавляем в нее наши переменные
PHP:
$reg_error = check_reg ($name, $email, $password1, $password2, $fullname, $firm_name, $city, $phone, $fullinfo, $sec_code, $sec_code_session);


что бы убрать второй шаг

ищем
PHP:
if (isset($_POST['submit_val'])) {

и удаляем все что ниже ДО

PHP:
if ($stop){ msgbox ($lang['reg_err_18'], $stop); }

далее ищем
PHP:
if ($doaction == "validating" AND !$stopregistration) {

все что ниже меняем на
PHP:
		msgbox ($lang['reg_ok'], $lang['reg_ok_1']);
}

запись в базу

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

добавляем свои перменные

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

ну как то так , вроде ничего не пропустил
 
И это для Дополнительных полей профиля пользователя (которые выведены) в регистрацию - тоже будет работать ?
 
Это буде работать для полей
$firm_name = $db->safesql($parse->process($_POST['firm_name']));
$city = $db->safesql($parse->process($_POST['city']));
$phone = $db->safesql($parse->process($_POST['phone']));

Если надо, то по такому же принципу добавь свои
 
Это всё можно настроить в шаблоне registration.tpl

Попробуй всё что между тегами [validation]...[/validation] поместить в теги [registration]...[/registration]


Не было времени это праверить.
Перенес иформацию из под [validation]...[/validation]

а именно

PHP:
<div class="reg">
Ваше имя:<br />
<input type="text" name="fullname" />
<label>Можете ввести свое настоящее имя, а можете и псевдоним.</label>
</div>
<div class="reg">
Загрузить аватару:<br />
<input type="file" name="image" />
<label>Максимально допустимый размер аватары 60х60.</label>
</div>
{xfields}

ноо теперь не работает {xfields} - он так и отображается
+ второй шаг регистрации то остался..
просто нет инфы (она перенесена) а кнопку то нажать надо -зачем?

надо чтобы при первом шаге при нажатии на кнопку нас оповещало, что регистраия на сайта прошла успешно.
 
  • Заблокирован
  • #7
стало, например
PHP код:
function check_reg ($name, $email, $password1, $password2, $fullname, $firm_name, $city, $phone, $fullinfo, $sec_code=1, $sec_code_session=1) {
$fullname, $firm_name, $city, $phone, $fullinfo, $sec_code=1, - это все из названия полей {xfields}, правильно? Если да, тогда просто супер!
 
Дле не имеет временной базы пользователей
все кодируеться в урл (если активация включена)
если тебе не нужна активация через майл и дополнительные поля то замени шаг два (редирект) на шаг три.
 
где заменить ? активация через e-mail и дополнительные поля в регистрации мне нужны но нужно чтбобы это выглядело всё так
Для просмотра ссылки Войди или Зарегистрируйся
и при нажатии на отправить данные сразу отправлялись и больше не было никаких шагов в регистрации
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху