Сделать заполнение окошка в рег. форме обязательным
-
- phpBB 1.4.1
- Сообщения: 44
- Стаж: 19 лет 6 месяцев
- Откуда: Славный город ПИТЕР
Сделать заполнение окошка в рег. форме обязательным
Товарищи, соотечественники... Кто-нибудь подскажет, как сделать так, чтобы в форме регистрации нового пользователя какое-либо окошко (например, "откуда") стало обязательным для заполнения. То есть, регистрация не будет закончена до тех пор, пока пользователь туда не введет информацию... (так же как с полями пароль*, логин*, e-mail*). Поможете?
-
- Former team member
- Сообщения: 4463
- Стаж: 20 лет 5 месяцев
- Поблагодарили: 1 раз
-
- phpBB 1.4.1
- Сообщения: 44
- Стаж: 19 лет 6 месяцев
- Откуда: Славный город ПИТЕР
Моды - это, конечно, замечательно. Но зачем использовать моды, когда нужно подправить код в profile_add_body.tpl. Ведь наверняка, есть код в строчках пароля и имени пользователя в этом темплете, отвечающий за обязательность заполнения соответствующих полей в регистрационной форме. Нужно знать этот код и подставить его в строчку (в profile_add_body.tpl) с "местом проживания" пользователя... В-общем, наверное, понятно, что я хочу сделать... Но так как я только начинающий в сфере phpbb-технологий, хотелось бы узнать у профессионалов, как сделать именно то, о чем я здесь говорю... 

-
- Former team member
- Сообщения: 4463
- Стаж: 20 лет 5 месяцев
- Поблагодарили: 1 раз
buffoon
Я всё что вы сказали знал с самого начала. Потрудились бы скачать мод, залезть в папку с дополнениями и увидели бы там как сделать поле обязательным к заполнению.
Объясните, почему я должен это вам расжевывать? Я вам дал сразу наиболее простое и проверенное решение, почему я должен все расписывать, только потому что вам лень или вы просто не удосужились посмотреть куда вас направили?
Я всё что вы сказали знал с самого начала. Потрудились бы скачать мод, залезть в папку с дополнениями и увидели бы там как сделать поле обязательным к заполнению.
Объясните, почему я должен это вам расжевывать? Я вам дал сразу наиболее простое и проверенное решение, почему я должен все расписывать, только потому что вам лень или вы просто не удосужились посмотреть куда вас направили?
У меня почему то складывается впечатление что вам не хотелось бы узнать, а вы всего лишь хотите что бы мы вам намодили форум. Знаете установкой винды по телефону и обновлением форумов через аську я занимаюсь только для очень близких друзей.buffoon писал(а):хотелось бы узнать у профессионалов, как сделать именно то, о чем я здесь говорю...
-
- phpBB 1.4.1
- Сообщения: 44
- Стаж: 19 лет 6 месяцев
- Откуда: Славный город ПИТЕР
Извините за навязчивость. Так и сделаю: посмотрю мод 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)
Вот и все! А Вы - моды, моды...
Добавлено спустя 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)
Вот и все! А Вы - моды, моды...

-
- Former team member
- Сообщения: 4463
- Стаж: 20 лет 5 месяцев
- Поблагодарили: 1 раз
buffoon
Ой, как вам нравится чтоб вас тыкали носом в известное место.
Только учтите что подлогинившись, чел просто сотрет инфу и ничего ему не будет.buffoon писал(а):Решение проблемы было мной найдено следующим образом
buffoon писал(а):И не надо никаких модов, в которых нет ответов на поставленные вопросы.
Код: Выделить всё
#########################################################################################
##
## Hack Title: New field is mandatory
## Author: Acid
##
## Description: If you want to set a (new) field as mandatory..
-
- phpBB 1.4.1
- Сообщения: 44
- Стаж: 19 лет 6 месяцев
- Откуда: Славный город ПИТЕР
1. Начнем с того, что не все такие умные и стирать инфу, подлогинившись, просто не имеет смысла. Инфа-то по сути - не важная. Просто, чтобы всякие товарищи ответственней относились к регистрации, а не оставляли пустые поля - я введу такие меры. Пусть потом стирают, откуда они и два слова о себе... Зачем тогда писали? Глупо.
2. Речь в Вашем моде идет о неком $info. Это раз. Кроме того, в этом моде предлагается выполнить массу действий, тогда как можно выполнить только одно. Это два. К тому же я не задаюсь проблемой, чтобы потом это поле нельзя было править, как имя пользователя. Это три.
Но все-равно спасибо за ценные рекоммендации...
2. Речь в Вашем моде идет о неком $info. Это раз. Кроме того, в этом моде предлагается выполнить массу действий, тогда как можно выполнить только одно. Это два. К тому же я не задаюсь проблемой, чтобы потом это поле нельзя было править, как имя пользователя. Это три.
Но все-равно спасибо за ценные рекоммендации...
-
- Former team member
- Сообщения: 4463
- Стаж: 20 лет 5 месяцев
- Поблагодарили: 1 раз
Ну если вам не важно, то конечно, но смысла никакого.buffoon писал(а):1. Начнем с того, что не все такие умные и стирать инфу, подлогинившись, просто не имеет смысла. Инфа-то по сути - не важная. Просто, чтобы всякие товарищи ответственней относились к регистрации, а не оставляли пустые поля - я введу такие меры. Пусть потом стирают, откуда они и два слова о себе... Зачем тогда писали? Глупо.
Так трудно искать $location ?buffoon писал(а):2. Речь в Вашем моде идет о неком $info. Это раз.
Одно редактирование кода (два если это выпадающее меню) и одно редактировние шаблона. Это много?buffoon писал(а):Кроме того, в этом моде предлагается выполнить массу действий, тогда как можно выполнить только одно. Это два.
А кто сказал что его нельзя будет править? Его нельзя будет оставлять незаполненым.buffoon писал(а):К тому же я не задаюсь проблемой, чтобы потом это поле нельзя было править, как имя пользователя. Это три.
Пожалуйста. Удачи.buffoon писал(а):Но все-равно спасибо за ценные рекоммендации...
-
- phpBB 1.4.4
- Сообщения: 199
- Стаж: 20 лет 3 месяца
- Откуда: Kiev.UA
ИМХО, разумнее будет отделить мух от основного блюда
пароль и мейл - критичная информация и по этой причине, видимо, проверяеются php скриптом
остальные поля: "Откуда", "Интересы", "Род занятий" и т.п., если не реализованы в виде списков а оставленые на откуп пользователю, могут проверятся средствами JS
я было начал писать свои функции на JS, но наткнулся на скрипт от Flexx:
скрипт нужно сохранить в файле form.inc (впрочем, название файла значения не имеет)
в теле скрипта есть довольно подробые инструкции по его применению с примерами
пароль и мейл - критичная информация и по этой причине, видимо, проверяеются 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 (впрочем, название файла значения не имеет)
в теле скрипта есть довольно подробые инструкции по его применению с примерами
-
- phpBB Guru
- Сообщения: 5484
- Стаж: 21 год 1 месяц
- Поблагодарили: 2 раза
buffoon
Если уж на то пошло, то $location, а не $LOCATION... регистронезависимы только имена встроенных функций...
Если уж на то пошло, то $location, а не $LOCATION... регистронезависимы только имена встроенных функций...
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
-
- phpBB 1.2.0
- Сообщения: 19
- Стаж: 17 лет 3 месяца
-
- Former team member
- Сообщения: 9683
- Стаж: 18 лет 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 только на форумах. По найму не работаю.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
-
- phpBB 1.0.0
- Сообщения: 9
- Стаж: 16 лет 11 месяцев
Re: Сделать заполнение окошка в рег. форме обязательным
Здравствуйте,
Я пытаюсь сделать поле для дня рождения обязятельным. Я пробую следующий код, но поскольку я в php не разбираюсь у меня ничего не получается[/code]
Подскажите мне, пожалуйста, как правельно этот код написать. И что значит следующее?
Заренее Спасибо
Я пытаюсь сделать поле для дня рождения обязятельным. Я пробую следующий код, но поскольку я в 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;
Подскажите мне, пожалуйста, как правельно этот код написать. И что значит следующее?
Код: Выделить всё
#-----[ DELETE (2x) ]---------------------------------------------------
#
# only if youґre using a dropdown menu
$info = ($info == $lang['Info_choice']['0']) ? '' : $info;
Последний раз редактировалось foxandsoul 22.05.2008 22:17, всего редактировалось 1 раз.
-
- Former team member
- Сообщения: 6517
- Стаж: 20 лет 9 месяцев
- Откуда: Бердск
Re: Сделать заполнение окошка в рег. форме обязательным
вы бы пробовали посмотреть как уже сделаны обязательные поля и тогда бы не составило труда добавить туда и все остальное
Как правильно задавать вопросы
Для особо одаренных: поиск - это есть круто.
FAQ v.2 | FAQ v.3 | Шаблон запроса
Для особо одаренных: поиск - это есть круто.
FAQ v.2 | FAQ v.3 | Шаблон запроса
-
- Former team member
- Сообщения: 4463
- Стаж: 20 лет 5 месяцев
- Поблагодарили: 1 раз
Re: Сделать заполнение окошка в рег. форме обязательным
foxandsoul
Какой мод дней рождений используете? В одном из них точно можно в админке включить его обязательность, в другом не знаю, но стоит проверить.
Какой мод дней рождений используете? В одном из них точно можно в админке включить его обязательность, в другом не знаю, но стоит проверить.