Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

Сделать заполнение окошка в рег. форме обязательным

Проблемы с установкой или работой phpBB 2.0.x? Ищите ответы здесь!
Аватара пользователя
buffoon
phpBB 1.4.1
Сообщения: 44
Стаж: 18 лет 6 месяцев
Откуда: Славный город ПИТЕР

Сделать заполнение окошка в рег. форме обязательным

Сообщение buffoon »

Товарищи, соотечественники... Кто-нибудь подскажет, как сделать так, чтобы в форме регистрации нового пользователя какое-либо окошко (например, "откуда") стало обязательным для заполнения. То есть, регистрация не будет закончена до тех пор, пока пользователь туда не введет информацию... (так же как с полями пароль*, логин*, e-mail*). Поможете?
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Стаж: 19 лет 5 месяцев
Поблагодарили: 1 раз

Сообщение VVVas »

я люблю daft punk | новый sugoi.ru
Аватара пользователя
buffoon
phpBB 1.4.1
Сообщения: 44
Стаж: 18 лет 6 месяцев
Откуда: Славный город ПИТЕР

Сообщение buffoon »

Моды - это, конечно, замечательно. Но зачем использовать моды, когда нужно подправить код в profile_add_body.tpl. Ведь наверняка, есть код в строчках пароля и имени пользователя в этом темплете, отвечающий за обязательность заполнения соответствующих полей в регистрационной форме. Нужно знать этот код и подставить его в строчку (в profile_add_body.tpl) с "местом проживания" пользователя... В-общем, наверное, понятно, что я хочу сделать... Но так как я только начинающий в сфере phpbb-технологий, хотелось бы узнать у профессионалов, как сделать именно то, о чем я здесь говорю... :D
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Стаж: 19 лет 5 месяцев
Поблагодарили: 1 раз

Сообщение VVVas »

buffoon
Я всё что вы сказали знал с самого начала. Потрудились бы скачать мод, залезть в папку с дополнениями и увидели бы там как сделать поле обязательным к заполнению.

Объясните, почему я должен это вам расжевывать? Я вам дал сразу наиболее простое и проверенное решение, почему я должен все расписывать, только потому что вам лень или вы просто не удосужились посмотреть куда вас направили?
buffoon писал(а):хотелось бы узнать у профессионалов, как сделать именно то, о чем я здесь говорю...
У меня почему то складывается впечатление что вам не хотелось бы узнать, а вы всего лишь хотите что бы мы вам намодили форум. Знаете установкой винды по телефону и обновлением форумов через аську я занимаюсь только для очень близких друзей.
я люблю daft punk | новый sugoi.ru
Аватара пользователя
buffoon
phpBB 1.4.1
Сообщения: 44
Стаж: 18 лет 6 месяцев
Откуда: Славный город ПИТЕР

Сообщение buffoon »

Извините за навязчивость. Так и сделаю: посмотрю мод modify_profile

Добавлено спустя 1 час 9 минут 53 секунды:

Простые проблемы решаются простыми путями! И не надо никаких модов, в которых нет ответов на поставленные вопросы. Я же говорил: нужно сделать небольшое изменение и все, чтобы заполнение поля стало обязательным!

Решение проблемы было мной найдено следующим образом:

ОТКРЫВАЕМ файл includes/usercp_register.php
НАХОДИМ:
else if ( $mode == 'register' )
{
if ( empty($username) || empty($new_password) || empty($password_confirm) || empty($email) )

ДОБАВЛЯЕМ после empty($email):
|| empty($LOCATION)

Вот и все! А Вы - моды, моды... :D
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Стаж: 19 лет 5 месяцев
Поблагодарили: 1 раз

Сообщение VVVas »

buffoon
buffoon писал(а):Решение проблемы было мной найдено следующим образом
Только учтите что подлогинившись, чел просто сотрет инфу и ничего ему не будет.
buffoon писал(а):И не надо никаких модов, в которых нет ответов на поставленные вопросы.

Код: Выделить всё

#########################################################################################
## 
## Hack Title:    New field is mandatory
## Author:        Acid
##
## Description:   If you want to set a (new) field as mandatory..
Ой, как вам нравится чтоб вас тыкали носом в известное место.
я люблю daft punk | новый sugoi.ru
Аватара пользователя
buffoon
phpBB 1.4.1
Сообщения: 44
Стаж: 18 лет 6 месяцев
Откуда: Славный город ПИТЕР

Сообщение buffoon »

1. Начнем с того, что не все такие умные и стирать инфу, подлогинившись, просто не имеет смысла. Инфа-то по сути - не важная. Просто, чтобы всякие товарищи ответственней относились к регистрации, а не оставляли пустые поля - я введу такие меры. Пусть потом стирают, откуда они и два слова о себе... Зачем тогда писали? Глупо.
2. Речь в Вашем моде идет о неком $info. Это раз. Кроме того, в этом моде предлагается выполнить массу действий, тогда как можно выполнить только одно. Это два. К тому же я не задаюсь проблемой, чтобы потом это поле нельзя было править, как имя пользователя. Это три.
Но все-равно спасибо за ценные рекоммендации...
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Стаж: 19 лет 5 месяцев
Поблагодарили: 1 раз

Сообщение VVVas »

buffoon писал(а):1. Начнем с того, что не все такие умные и стирать инфу, подлогинившись, просто не имеет смысла. Инфа-то по сути - не важная. Просто, чтобы всякие товарищи ответственней относились к регистрации, а не оставляли пустые поля - я введу такие меры. Пусть потом стирают, откуда они и два слова о себе... Зачем тогда писали? Глупо.
Ну если вам не важно, то конечно, но смысла никакого.
buffoon писал(а):2. Речь в Вашем моде идет о неком $info. Это раз.
Так трудно искать $location ?
buffoon писал(а):Кроме того, в этом моде предлагается выполнить массу действий, тогда как можно выполнить только одно. Это два.
Одно редактирование кода (два если это выпадающее меню) и одно редактировние шаблона. Это много?
buffoon писал(а):К тому же я не задаюсь проблемой, чтобы потом это поле нельзя было править, как имя пользователя. Это три.
А кто сказал что его нельзя будет править? Его нельзя будет оставлять незаполненым.
buffoon писал(а):Но все-равно спасибо за ценные рекоммендации...
Пожалуйста. Удачи.
я люблю daft punk | новый sugoi.ru
Аватара пользователя
AlexWB
phpBB 1.4.4
Сообщения: 199
Стаж: 19 лет 3 месяца
Откуда: Kiev.UA

Сообщение AlexWB »

ИМХО, разумнее будет отделить мух от основного блюда

пароль и мейл - критичная информация и по этой причине, видимо, проверяеются php скриптом

остальные поля: "Откуда", "Интересы", "Род занятий" и т.п., если не реализованы в виде списков а оставленые на откуп пользователю, могут проверятся средствами JS

я было начал писать свои функции на JS, но наткнулся на скрипт от Flexx:

Код: Выделить всё

<?php

# JavaScript Auto Generator v0.1
# Класс для генерирования JavaScript-функции проверки формы
# Автор: Flexx (Ivan Pirog, admin@flexx.org.ua)
# URL: http://flexx.org.ua
#
# Конструктор FormValid(string FormName, string FunctionName, const Language);
#   где: FormName - Имя проверяемой формы
#        FunctionName - Имя функции проверки формы
#        Language - Язык выдаваемых сообщений (LANG_RU,LANG_EN)
#                   По умолчанию - русский
#
#------------------------------------------------------------------
#
# Функция AddIf - добавить проверку поля в функцию проверки
#   AddIf (string Item, string ItemName, const Type [, mixed Add])
#      где: Item - название поля (например: $Item="Email" если <input name="Email"...)
#           ItemName - название поля для вывода сообщения об ошибке
#           Type - тип проверки (по умолчанию ITEM_IS_EMPTY)
#           Add - добавочная переменная.
#
#   Type: ITEM_IS_EMPTY - проверка пустое ли поле. Если пустое - сообщить
#         ITEM_IS_NUM - проверка на число, т.е. поле должно быть цифровым
#         ITEM_IS_EMAIL - проверка на корректность E-mail
#         ITEM_IS_EMAIL_CLEAR - проверка на E-mail + очистка поля при ошибке
#         ITEM_IS_SMALL - проверка на кол-во символов. Не меньше чем значение в переменной Add
#         ITEM_IS_SMALL_CLEAR - -//- + очистка поля при ошибке
#         ITEM_IS_BIG - проверка на кол-во символов. Не больше чем значение в переменной Add
#         ITEM_IS_BIG_CLEAR - + очистка поля при ошибке
#-----------------------------------------------------------------------
#
# Функция Add - добавить свой кусок кода JavaScript
#   Add (string Code)
#     где: Code - кусок кода
#-----------------------------------------------------------------------
#
# Функция Out - вывод сгенерированного скрипта
#
#-----------------------------------------------------------------------
#
# Пример использования:
#
#   include('form.inc');
#
#   $MyForm = new FormValid('form','Check',LANG_RU);
#   $MyForm->AddIf('Name','Имя',ITEM_IS_EMPTY);
#   $MyForm->AddIf('Passw','Пароль',ITEM_IS_EMPTY);
#   $MyForm->AddIf('Passw','Пароль',ITEM_IS_SMALL_CLEAR,6);
#   $MyForm->AddIf('Word','Слово',ITEM_IS_EMPTY);
#   $MyForm->AddIf('Word','Слово',ITEM_IS_BIG,5);
#   $MyForm->AddIf('Email','E-mail',ITEM_IS_EMPTY);
#   $MyForm->AddIf('Email','',ITEM_IS_EMAIL);
#   $MyForm->Out();
#
# Форма:
#   <form method="POST" onsubmit="return Check()" name="form">
#     <table border=0 cellspacing=5 cellpadding=0>
#       <tr><td align=right>Твоё имя:</td><td><input name="Name" type="text"></td></tr>
#       <tr><td align=right>Пароль больше 6-ти символов:</td><td><input name="Passw" type="password"></td></tr>
#       <tr><td align=right>Слово меньше 5-ти символов:</td><td><input name="Word" type="text"></td></tr>
#       <tr><td align=right>E-mail:</td><td><input name="Email" type="text"></td></tr>
#       <tr><td></td><td><input type="submit" value="Угу"></td></tr>
#     </table>
#   </form>
#
#
# JavaScript, который сгенерирует класс:
#   <script language="JavaScript">
#   function Check(){
#   if(!f.Name.value){
#   alert('Обязательное поле "Имя" не заполнено.');
#   f.Name.focus();
#   return false;}
#   if(!f.Passw.value){
#   alert('Обязательное поле "Пароль" не заполнено.');
#   f.Passw.focus();
#   return false;}
#   jsfield = new String(f.Passw.value);
#   if (jsfield.length<6){
#   alert ('Поле "Пароль" должно быть длиннее 6 символов.');
#   f.Passw.value='';
#   f.Passw.focus();
#   return false;}
#   if(!f.Word.value){
#   alert('Обязательное поле "Слово" не заполнено.');
#   f.Word.focus();
#   return false;}
#   jsfield = new String(f.Word.value);
#   if (jsfield.length>5){
#   alert ('Поле "Слово" должно быть меньше 5 символов.');
#   f.Word.focus();
#   return false;}
#   if(!f.Email.value){
#   alert('Обязательное поле "E-mail" не заполнено.');
#   f.Email.focus();
#   return false;}
#   if(f.Email.value.indexOf('@',0)==-1){
#   alert ('E-mail адрес введён не корректно.');
#   f.Email.focus();
#   return false;}
#   return true; }
#   </script>
#
#


define('ITEM_IS_EMPTY'       ,1);
define('ITEM_IS_NUM'         ,2);
define('ITEM_IS_EMAIL'       ,3);
define('ITEM_IS_EMAIL_CLEAR' ,4);
define('ITEM_IS_SMALL'       ,5);
define('ITEM_IS_SMALL_CLEAR' ,6);
define('ITEM_IS_BIG'         ,7);
define('ITEM_IS_BIG_CLEAR'   ,8);
define('LANG_RU'             ,9);
define('LANG_EN'            ,10);

class FormValid
{
  var $Form;
  var $Out;
  var $Lang;

  function FormValid($FormName,$FunctionName,$Language=LANG_RU)
  {
    $this->Form = $FormName;
    $this->Lang = $Language;
    $this->Out = "<script language=\"JavaScript\">\r\n".
                 "function $FunctionName(){\r\n";
  }//function FormValid

  function AddIf($Item,$ItemName='',$VerifyType=ITEM_IS_EMPTY,$Add='')
  {
    switch($VerifyType)
    {
      case ITEM_IS_EMPTY:
        $this->Out.="if(!$this->Form.$Item.value){\r\n";
        if ($this->Lang==LANG_RU) $this->Out.="alert('Обязательное поле \"$ItemName\" не заполнено.');\r\n";
        if ($this->Lang==LANG_EN) $this->Out.="alert('The required field \"$ItemName\" is not filled.');\r\n";
        $this->Out.="$this->Form.$Item.focus();\r\n".
                    "return false;}\r\n";
      break;

      case ITEM_IS_NUM:
        $this->Out.="if(isNaN($this->Form.$Item.value)){\r\n";
        if ($this->Lang==LANG_RU) $this->Out.="alert('Обязательное поле \"$ItemName\" должно быть цифровым.');\r\n";
        if ($this->Lang==LANG_EN) $this->Out.="alert('The required field \"$ItemName\" should be digital.');\r\n";
        $this->Out.="$this->Form.$Item.focus();\r\n".
                    "return false;}\r\n";
      break;

      case ITEM_IS_EMAIL:
        $this->Out.="if($this->Form.$Item.value.indexOf('@',0)==-1){\r\n";
        if ($this->Lang==LANG_RU) $this->Out.="alert ('E-mail адрес введён не корректно.');\r\n";
        if ($this->Lang==LANG_EN) $this->Out.="alert ('E-mail should contain a proper e-mail address.');\r\n";
        $this->Out.="$this->Form.$Item.focus();\r\n".
                    "return false;}\r\n";
      break;

      case ITEM_IS_EMAIL_CLEAR:
        $this->Out.="if($this->Form.$Item.value.indexOf('@',0)==-1){\r\n";
        if ($this->Lang==LANG_RU) $this->Out.="alert ('E-mail адрес введён не корректно.');\r\n";
        if ($this->Lang==LANG_EN) $this->Out.="alert ('E-mail should contain a proper e-mail address.');\r\n";
        $this->Out.="$this->Form.$Item.value='';\r\n".
                    "$this->Form.$Item.focus();\r\n".
                    "return false;}\r\n";
      break;

      case ITEM_IS_SMALL:
        $this->Out.="jsfield = new String($this->Form.$Item.value);\r\n".
                    "if (jsfield.length<$Add){\r\n";
        if ($this->Lang==LANG_RU) $this->Out.="alert ('Поле \"$ItemName\" должно быть длиннее $Add символов.');\r\n";
        if ($this->Lang==LANG_EN) $this->Out.="alert ('The field \"$ItemName\" should be longer than $Add symbols.');\r\n";
        $this->Out.="$this->Form.$Item.focus();\r\n".
                    "return false;}\r\n";
      break;

      case ITEM_IS_SMALL_CLEAR:
        $this->Out.="jsfield = new String($this->Form.$Item.value);\r\n".
                    "if (jsfield.length<$Add){\r\n";
        if ($this->Lang==LANG_RU) $this->Out.="alert ('Поле \"$ItemName\" должно быть длиннее $Add символов.');\r\n";
        if ($this->Lang==LANG_EN) $this->Out.="alert ('The field \"$ItemName\" should be longer than $Add symbols.');\r\n";
        $this->Out.="$this->Form.$Item.value='';\r\n".
                    "$this->Form.$Item.focus();\r\n".
                    "return false;}\r\n";
      break;

      case ITEM_IS_BIG:
        $this->Out.="jsfield = new String($this->Form.$Item.value);\r\n".
                    "if (jsfield.length>$Add){\r\n";
        if ($this->Lang==LANG_RU) $this->Out.="alert ('Поле \"$ItemName\" должно быть меньше $Add символов.');\r\n";
        if ($this->Lang==LANG_EN) $this->Out.="alert ('The field \"$ItemName\" should be less than $Add symbols.');\r\n";
        $this->Out.="$this->Form.$Item.focus();\r\n".
                    "return false;}\r\n";
      break;

      case ITEM_IS_BIG_CLEAR:
        $this->Out.="jsfield = new String($this->Form.$Item.value);\r\n".
                    "if (jsfield.length>$Add){\r\n";
        if ($this->Lang==LANG_RU) $this->Out.="alert ('Поле \"$ItemName\" должно быть меньше $Add символов.');\r\n";
        if ($this->Lang==LANG_EN) $this->Out.="alert ('The field \"$ItemName\" should be less than $Add symbols.');\r\n";
        $this->Out.="$this->Form.$Item.value='';\r\n".
                    "$this->Form.$Item.focus();\r\n".
                    "return false;}\r\n";
      break;
    }//switch

  }//function AddIf

  function Add($Code)
  {
    $this->Out.=$Code;
  }//function Code

  function Out()
  {
    print $this->Out;
    print "return true; }\r\n";
    print "</script>\r\n";
    unset($this->Out);
    unset($this->Form);
    unset($this->Lang);
  }//function Out

}//class


?>


скрипт нужно сохранить в файле form.inc (впрочем, название файла значения не имеет)
в теле скрипта есть довольно подробые инструкции по его применению с примерами
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Стаж: 20 лет 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

buffoon
Если уж на то пошло, то $location, а не $LOCATION... регистронезависимы только имена встроенных функций...
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
BoJIKoDaB
phpBB 1.2.0
Сообщения: 19
Стаж: 16 лет 3 месяца

Сообщение BoJIKoDaB »

Объясните как установить этот джава скрипт для нуба :( че куды засунуть не пойму допустим чтобы при регистрации было обязательным поле "Откуда" помогите пожалуйста :(
Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Стаж: 17 лет 11 месяцев
Откуда: Питер
Благодарил (а): 1 раз
Поблагодарили: 27 раз

Сообщение Палыч »

BoJIKoDaB писал(а):Объясните как установить этот джава скрипт
А зачем он вам, если вы не понимаете..?
BoJIKoDaB писал(а):че куды засунуть
Великий и могучий... :(
BoJIKoDaB писал(а):чтобы при регистрации было обязательным поле "Откуда"

Код: Выделить всё

#-----[ OPEN ]------------------------------------------
#  
# includes/usercp_register.php
# 
#-----[ FIND (be aware of the 3 braces) ]---------------------------------------------------
# 
				$username_sql = "username = '" . str_replace("\'", "''", $username) . "', ";
			}
		}
	}

# 
#-----[ BELOW ADD ]---------------------------------------------------
# 
# if you want to check the field only for register, you have to
# delete "$mode == 'editprofile' ||"

	if( $mode == 'editprofile' || $mode == 'register' )
	{
		if( empty($location) )
		{
			$error = TRUE;
			$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Fields_empty'];
		}
	}
# 
#-----[ OPEN ]------------------------------------------
#  
# templates/xxx/profile_add_body.tpl
# 
#-----[ FIND and ADD a * after that ]---------------------------------------------------
# 
{L_LOCATION}:
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
foxandsoul
phpBB 1.0.0
Сообщения: 9
Стаж: 15 лет 11 месяцев

Re: Сделать заполнение окошка в рег. форме обязательным

Сообщение foxandsoul »

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

Код: Выделить всё

#-----[ OPEN ]------------------------------------------
#  
# includes/usercp_register.php
# 
#-----[ FIND (be aware of the 3 braces) ]---------------------------------------------------
# 
				$username_sql = "username = '" . str_replace("\'", "''", $username) . "', ";
			}
		}
	}

# 
#-----[ BELOW ADD ]---------------------------------------------------
# 
# if you want to check the field only for register, you have to
# delete "$mode == 'editprofile' ||"

	if( $mode == 'editprofile' || $mode == 'register' )
	{
		// only if youґre using a dropdown menu (delete // before the next line)
		// if( $info == $lang['Info_choice']['0'] )
		// and uncomment the next line (add // before)
		if( empty($info) )
		{
			$error = TRUE;
			$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Fields_empty'];
		}
	}

# 
#-----[ DELETE (2x) ]---------------------------------------------------
#
# only if youґre using a dropdown menu

               		$info = ($info == $lang['Info_choice']['0']) ? '' : $info;
[/code]


Подскажите мне, пожалуйста, как правельно этот код написать. И что значит следующее?

Код: Выделить всё

#-----[ DELETE (2x) ]---------------------------------------------------
#
# only if youґre using a dropdown menu

               		$info = ($info == $lang['Info_choice']['0']) ? '' : $info;
Заренее Спасибо
Последний раз редактировалось foxandsoul 22.05.2008 22:17, всего редактировалось 1 раз.
Аватара пользователя
crash
Former team member
Сообщения: 6517
Стаж: 19 лет 9 месяцев
Откуда: Бердск

Re: Сделать заполнение окошка в рег. форме обязательным

Сообщение crash »

вы бы пробовали посмотреть как уже сделаны обязательные поля и тогда бы не составило труда добавить туда и все остальное
Как правильно задавать вопросы
Для особо одаренных: поиск - это есть круто.
FAQ v.2 | FAQ v.3 | Шаблон запроса
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Стаж: 19 лет 5 месяцев
Поблагодарили: 1 раз

Re: Сделать заполнение окошка в рег. форме обязательным

Сообщение VVVas »

foxandsoul
Какой мод дней рождений используете? В одном из них точно можно в админке включить его обязательность, в другом не знаю, но стоит проверить.
я люблю daft punk | новый sugoi.ru

Вернуться в «Поддержка phpBB 2.0.x»