Уважаемые пользователи, по техническим причинам загрузка файлов временно недоступна. Приносим извинения за временные неудобства.

Запрет использования латиницы в опред. поле при регистрации

У вас есть идея для расширения функциональности phpBB 3.0.x? Расскажите о ней здесь!
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
romeo_piter
phpBB 2.0.22
Сообщения: 1375
Стаж: 17 лет 6 месяцев
Благодарил (а): 260 раз
Поблагодарили: 32 раза

Запрет использования латиницы в опред. поле при регистрации

Сообщение romeo_piter »

При регистрации пользователь заполняет дополнительное поле "Откуда".
И поле "Настоящее имя"

Необходимо, чтобы эти поля заполнялись только на русском.
Есть ли готовые решения?
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3365
Стаж: 17 лет 7 месяцев
Благодарил (а): 37 раз
Поблагодарили: 1455 раз

Re: Запрет использования латиницы в опред. поле при регистра

Сообщение Nekstati »

На коленке. ©

Для дополнительных полей профиля:

includes/functions_profile_fields.php
сменить кодировку на UTF-8 без BOM
найти

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

					if (!preg_match('#^' . str_replace('\\\\', '\\', $field_data['field_validation']) . '$#i', $field_validate))
заменить на

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

					if (!preg_match('#^' . utf8_str_replace('\\\\', '\\', $field_data['field_validation']) . '$#iu', $field_validate))
найти

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

							case '[\w_\+\. \-\[\]]+':
								$error = sprintf($user->lang[$cp_result . '_SPACERS_ONLY'], $row['lang_name']);
							break;
добавить после

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

							case '[-\. а-яА-Я]+':
								$error = sprintf($user->lang[$cp_result . '_CYRILLIC_ONLY'], $row['lang_name']);
							break;
найти

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

		$validate_ary = array('CHARS_ANY' => '.*', 'NUMBERS_ONLY' => '[0-9]+', 'ALPHA_ONLY' => '[\w]+', 'ALPHA_SPACERS' => '[\w_\+\. \-\[\]]+');
заменить на

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

		$validate_ary = array('CHARS_ANY' => '.*', 'NUMBERS_ONLY' => '[0-9]+', 'ALPHA_ONLY' => '[\w]+', 'ALPHA_SPACERS' => '[\w_\+\. \-\[\]]+', 'CYRILLIC_ONLY' => '[-\. а-яА-Я]+');
language/ru/acp/profile.php
добавить

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

	'CYRILLIC_ONLY'				=> 'Только кириллица, пробел, дефис, точка',
language/ru/ucp.php
добавить

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

	'FIELD_INVALID_CHARS_CYRILLIC_ONLY'	=> 'Поле «%s» содержит недопустимые символы, разрешены только кириллица, пробелы, точки, дефисы. Латиница и цифры запрещены.',
При создании или правке дополнительного поля в админке выбираем нужную опцию в выпадающем списке «Допустимые символы».

—————————————————————————————————

Для штатного поля «Откуда»:

includes/ucp/ucp_profile.php
сменить кодировку на UTF-8 без BOM
найти

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

						'location'		=> array('string', true, 2, 100),
заменить на

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

						'location'		=> array(
							array('string', true, 2, 100),
							array('match', true, '#^[-\. а-яА-Я]+$#u')),
language/ru/common.php
добавить

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

	'WRONG_DATA_LOCATION'		=> 'Недопустимые символы в поле «Откуда». Разрешены кириллица, пробелы, точки, дефисы. Латиница и цифры запрещены.',
romeo_piter
phpBB 2.0.22
Сообщения: 1375
Стаж: 17 лет 6 месяцев
Благодарил (а): 260 раз
Поблагодарили: 32 раза

Re: Запрет использования латиницы в опред. поле при регистра

Сообщение romeo_piter »

Начал с этого:
Nekstati писал(а):Для штатного поля «Откуда»:

Но не работает. Т.е. регистрация без проблем проходит с латинским названием

Добавлено спустя 2 минуты 54 секунды:
Re: Запрет использования латиницы в опред. поле при регистрации
поле штатное (location)
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11372
Стаж: 16 лет 9 месяцев
Благодарил (а): 1832 раза
Поблагодарили: 1358 раз

Re: Запрет использования латиницы в опред. поле при регистра

Сообщение Пчелкин »

Nekstati писал(а):На коленке. ©
Эх...рассмотреть бы да переписать все с той коленки...в блокнотик и на века ...в нетленку...
А у меня все сработало на автобарыгах...проверил оба поля...полез еще на один форум менять...
ПыСы...а неплохо бы такую функцию в следующую версию двига впихнуть...
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3365
Стаж: 17 лет 7 месяцев
Благодарил (а): 37 раз
Поблагодарили: 1455 раз

Re: Запрет использования латиницы в опред. поле при регистра

Сообщение Nekstati »

romeo_piter писал(а):регистрация без проблем проходит с латинским названием
Я же пишу: «Для штатного поля». Штатно это поле отсутствует в форме регистрации, о нём нет даже упоминания в ucp_register.php, и я не представляю, как выглядит код, с помощью которого вы туда его впихнули. Это поле штатно присутствует только на вкладке «Профиль» личного раздела. А там всё работает.
romeo_piter писал(а):не работает.
:twisted:
romeo_piter
phpBB 2.0.22
Сообщения: 1375
Стаж: 17 лет 6 месяцев
Благодарил (а): 260 раз
Поблагодарили: 32 раза

Re: Запрет использования латиницы в опред. поле при регистра

Сообщение romeo_piter »

Nekstati писал(а):Я же пишу: «Для штатного поля». Штатно это поле отсутствует в форме регистрации, о нём нет даже упоминания в ucp_register.php, и я не представляю, как выглядит код, с помощью которого вы туда его впихнули. Это поле штатно присутствует только на вкладке «Профиль» личного раздела. А там всё работает.
Понял, прошу прощения, что ввел в заблуждение.
Просто поле там уже 3 года, забыл что оно дорисовывалось )))

Поле прописано в ucp_register так:

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

$data = array(
			'username'			=> utf8_normalize_nfc(request_var('username', '', true)),
			'new_password'		=> request_var('new_password', '', true),
			[b]'location'			=> request_var('location', '', true),[/b]
			'password_confirm'	=> request_var('password_confirm', '', true),
			'email'				=> strtolower(request_var('email', '')),
			'email_confirm'		=> strtolower(request_var('email_confirm', '')),
			'lang'				=> basename(request_var('lang', $user->lang_name)),
			'tz'				=> request_var('tz', (float) $timezone),
		);

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

	// Check and initialize some variables if needed
		if ($submit)
		{
			$error = validate_data($data, array(
				'username'			=> array(
					array('string', false, $config['min_name_chars'], $config['max_name_chars']),
					array('username', '')),
				'new_password'		=> array(
					array('string', false, $config['min_pass_chars'], $config['max_pass_chars']),
					array('password')),
				'password_confirm'	=> array('string', false, $config['min_pass_chars'], $config['max_pass_chars']),
				'email'				=> array(
					array('string', false, 6, 60),
					array('email')),
				'email_confirm'		=> array('string', false, 6, 60),
			[b]	'location'			=> array('string', false, 3, 60),[/b]
				'tz'				=> array('num', false, -14, 14),
				'lang'				=> array('match', false, '#^[a-z_\-]{2,}$#i'),

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

$user_row = array(
					'username'				=> $data['username'],
					'user_password'			=> phpbb_hash($data['new_password']),
					'user_email'			=> $data['email'],
        		[b]	'user_from'				=> $data['location'],[/b]
					'group_id'				=> (int) $group_id,
					'user_timezone'			=> (float) $data['tz'],
					'user_dst'				=> $is_dst,
					'user_lang'				=> $data['lang'],
					'user_type'				=> $user_type,
					'user_actkey'			=> $user_actkey,
					'user_ip'				=> $user->ip,
					'user_regdate'			=> time(),
					'user_inactive_reason'	=> $user_inactive_reason,
					'user_inactive_time'	=> $user_inactive_time,
				);

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

	// Include the language file for the AJAX stuff
		$user->setup('mods/ajaxchecks');
		$template->assign_vars(array(
			'ERROR'				=> (sizeof($error)) ? implode('<br />', $error) : '',
			'USERNAME'			=> $data['username'],
			'PASSWORD'			=> $data['new_password'],
			'PASSWORD_CONFIRM'	=> $data['password_confirm'],
			[b]'LOCATION'			=> $data['location'],[/b]
			'EMAIL'				=> $data['email'],
			'EMAIL_CONFIRM'		=> $data['email_confirm'],
Аватара пользователя
HAMMER663
Former team member
Сообщения: 2032
Стаж: 16 лет 6 месяцев
Откуда: Зеленоград
Благодарил (а): 77 раз
Поблагодарили: 249 раз

Re: Запрет использования латиницы в опред. поле при регистра

Сообщение HAMMER663 »

Ну так замени

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

'location'			=> array('string', false, 3, 60),
На

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

	'location'		=> array(
		array('string',false, 3, 60),
		array('match', false, '#^[-\. а-яА-Я]+$#u')),
romeo_piter
phpBB 2.0.22
Сообщения: 1375
Стаж: 17 лет 6 месяцев
Благодарил (а): 260 раз
Поблагодарили: 32 раза

Re: Запрет использования латиницы в опред. поле при регистра

Сообщение romeo_piter »

Уже сделал.

Спасибо.
Все отлично работает.

Nekstati, не подскажете, как к имеющимся
Nekstati писал(а):Разрешены кириллица, пробелы, точки, дефисы.
добавить запятые и цифры?
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3365
Стаж: 17 лет 7 месяцев
Благодарил (а): 37 раз
Поблагодарили: 1455 раз

Re: Запрет использования латиницы в опред. поле при регистра

Сообщение Nekstati »

Заменить

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

[-\. а-яА-Я]+
на

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

[-,\. 0-9а-яА-Я]+
Аватара пользователя
slavapril
phpBB 1.4.4
Сообщения: 126
Стаж: 13 лет 8 месяцев
Благодарил (а): 18 раз
Поблагодарили: 22 раза

Re: Запрет использования латиницы в опред. поле при регистра

Сообщение slavapril »

А можно для штатного поля «Откуда» правки не делать, а только для имени?
Аватара пользователя
Romnik
phpBB 2.0.3
Сообщения: 390
Стаж: 15 лет 8 месяцев
Откуда: Москва/Выдропужск
Благодарил (а): 44 раза
Поблагодарили: 76 раз

Re: Запрет использования латиницы в опред. поле при регистра

Сообщение Romnik »

slavapril писал(а):А можно для штатного поля «Откуда» правки не делать, а только для имени?
Мона.

Вернуться в «Запросы модов для phpBB 3.0.x»