Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
That

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

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

03/13/19 19:48 (изменено)

Здравствуйте. Необходимо запретить Русский язык в паролях, а так же большинство символов. В 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

Поделиться сообщением


Ссылка на сообщение

http://ipbskins.ru/forum/topic12529.html/page__st__15#entry106871

 

В js получить лэнг можно через ipb.lang['%key%'] - ipb.lang['pass_too_characters']

Чтобы он был доступен из js, его нужно продублировать в word pack: core/public_js

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение

Да, так 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

  • Upvote 2

Поделиться сообщением


Ссылка на сообщение

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

!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.

Поделиться сообщением


Ссылка на сообщение

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

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

Поделиться сообщением


Ссылка на сообщение
03/18/19 13:56 (изменено)

@siv1987,

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

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

Поделиться сообщением


Ссылка на сообщение

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

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...