Перейти к содержимому
Открыть в приложении

Удобный способ просмотра. Узнать больше.

Дизайн и модификация Invision Community

Полноэкранное приложение на главном экране с push-уведомлениями, медалями и многим другим.

Чтобы установить это приложение на iOS и iPadOS
  1. Нажмите иконку «Поделиться» в Safari
  2. Прокрутите меню и нажмите На экран «Домой».
  3. Нажмите Добавить в правом верхнем углу.
Чтобы установить это приложение на Android
  1. Нажмите меню из трёх точек (⋮) в правом верхнем углу браузера.
  2. Нажмите Добавить на главный экран или Установить приложение.
  3. Подтвердите, нажав Установить.
Русский язык для Invision Community 5

Запрет символов в пароле

Здравствуйте. Необходимо запретить Русский язык в паролях, а так же большинство символов. В register.php сделал это следующим путём:

elseif(!preg_match("/^[-a-zA-Z0-9_]+$/i", $in_password)) 
	{
			// Сообщение
			$form_errors['password'][$this->lang->words['pass_too_characters']] = $this->lang->words['pass_too_characters'];
	}

 

Подскажите пожалуйста, а как быть в ipb.register.js? нужно это же сообщение показать "на лету". И помогите пожалуйста найти смену пароля, чтобы сделать то же самое. Спасибо!

Изменено пользователем That

Рекомендованные сообщения

  • Автор

Да, так JS заработал. Спасибо большое! А где искать смену пароля из личного кабинета? Потому как пользователь уже после регистрации может прописать "плохой" пароль в своём аккаунте.

admin/applications/core/modules_public/global/lostpass.php

 

				if( $pass_a != $pass_b )
			{
				$this->registry->output->showError( 'pass_no_match', 10187 );								
			}

  • Автор

Что-то я немного не пойму что тут делать, зато понял что новый пароль пользователь может мало того указать любым символом что мне не нужно, так и ещё длиной в 1 символ. Что тоже очень плохо.

Ниже этого кода вставляете проверку пароля по длине или по символам.

  • Автор

Так. Ниже у меня проверяется длина следующим путём:

if ( strlen( $pass_a ) < 4 )
{
	$form_errors['password'][$this->lang->words['pass_too_short']] = $this->lang->words['pass_too_short'];
}

Далее захожу в настройки, во время изменения пароля указываю длину нового пароля в 2-3 символа. Пароль успешно меняется.

Далее захожу в настройки, во время изменения пароля указываю длину нового пароля в 2-3 символа.

Логика подсказывает, что не там делаете.

Для настроек email/пароля в профиле используется ссылка index.php?app=core&module=usercp&tab=core&area=email

А выше указан путь admin/applications/core/modules_public/global/lostpass.php к файлу для "Забыл пароль"

 

 

Далее захожу в настройки, во время изменения пароля указываю длину нового пароля в 2-3 символа

admin/applications/core/extensions/usercpForms.php

 

	/**
 * UserCP Save Form: Password
 *
 * @param	array	Array of member / core_sys_login information (if we're editing)
 * @return	mixed	Array of errors / boolean true
 */
public function saveFormPassword( $member=array() )

 

Ниже у меня проверяется длина следующим путём

Используйте mb_strlen

  • Автор

А если кроме длины строки нужно проверить

!preg_match("/^[-a-zA-Z0-9_]+$/i"

? Ведь судя по описанию можно лишь получить внутреннюю кодировку.

Ведь судя по описанию можно лишь получить внутреннюю кодировку.

Я написал, чтобы использовали mb_strlen вместо strlen.

Мой комментарий относился к

Ниже у меня проверяется длина следующим путём:

if ( strlen( $pass_a )

{

$form_errors['password'][$this->lang->words['pass_too_short']] = $this->lang->words['pass_too_short'];

}

Добрый день. Тоже заинтересовал данный вопрос, потому как нужно запретить менее 6ти символов и всякие там кавычки в изменяемом пароле. Ознакомившись с темой я понял что я ничего не понял. У нас есть путь:

index.php?app=core&module=usercp&tab=core&area=email

Судя по всему он ведёт к файлу /applications/core/modules_public/usercp/ и там лежит файл manualResolver.php. Открыв его я попал в тупик. Либо я пришёл не туда, либо я не могу понять куда тут добавить проверку.

Судя по всему он ведёт к файлу

newbie выше написал куда он ведет, но почему-то никто этого не видит

 

admin/applications/core/extensions/usercpForms.php

В методе saveFormEmailPassword

 

Найти (этот код повторяется 2 раза в файле, найти второй, в функции saveFormEmailPassword)

 

		if ( $new_pass != $chk_pass )
		{
			return array( 0 => $this->lang->words['passwords_not_matchy'] );
		}

Ниже добавить

			if( !preg_match("/^[-a-zA-Z0-9_]+$/i", $new_pass ) ) 
		{
			return array( 0 => $this->lang->words['pass_too_characters'] );
		}

		if ( strlen( $new_pass ) < 4 )
		{
			return array( 0 => $this->lang->words['pass_too_short'] );
		}

Прошу прощения, но я внимательно перечитал данную информацию и перепроверил, не работает. Затем я убрал свои ключи языка и подставил ваши. Ничего... После чего я вовсе просто скопировал ваш код и заменил свой. Не помогло. Вот код данного файла. Текущая версия форума 3.4.9.

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

Естественно эти лэнги не существуют, их нужно создать в языке, либо написать сообщение ошибки вместо них.

@siv1987,

Так дело то сейчас не в том, что видны ошибки или нет :). Я залогинился, меняю пароль на любой односимвольный. Мне форум пишет что пароль успешно изменён. Тут же я ввожу свой новый пароль, который я до этого забил в 1 символ и меняю его на 2 символа. Соответственно система проверяет ранее изменёный пароль и так как всё успешно - меняет его ещё раз на 2х символьный :)

Изменено пользователем Gendrixon

Я залогинился, меняю пароль на любой односимвольный. Мне форум пишет что пароль успешно изменён.

Очень странно, потому что я с этой модификации пароль поменять не могу.

 

8HjMUPk.png

 

Возможно у вас не сохраняются изменения в файле, или есть какой-то хук который перегружает этот метод (мало ли).

Создайте аккаунт или войдите в него для комментирования

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.