That Posted March 13, 2019 Share Posted March 13, 2019 (edited) Здравствуйте. Необходимо запретить Русский язык в паролях, а так же большинство символов. В 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? нужно это же сообщение показать "на лету". И помогите пожалуйста найти смену пароля, чтобы сделать то же самое. Спасибо! Edited March 13, 2019 by That Link to comment Share on other sites More sharing options...
siv1987 Posted March 13, 2019 Share Posted March 13, 2019 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 1 Link to comment Share on other sites More sharing options...
That Posted March 13, 2019 Author Share Posted March 13, 2019 Да, так JS заработал. Спасибо большое! А где искать смену пароля из личного кабинета? Потому как пользователь уже после регистрации может прописать "плохой" пароль в своём аккаунте. Link to comment Share on other sites More sharing options...
siv1987 Posted March 13, 2019 Share Posted March 13, 2019 admin/applications/core/modules_public/global/lostpass.php if( $pass_a != $pass_b ) { $this->registry->output->showError( 'pass_no_match', 10187 ); } Link to comment Share on other sites More sharing options...
That Posted March 13, 2019 Author Share Posted March 13, 2019 Что-то я немного не пойму что тут делать, зато понял что новый пароль пользователь может мало того указать любым символом что мне не нужно, так и ещё длиной в 1 символ. Что тоже очень плохо. Link to comment Share on other sites More sharing options...
siv1987 Posted March 14, 2019 Share Posted March 14, 2019 Ниже этого кода вставляете проверку пароля по длине или по символам. Link to comment Share on other sites More sharing options...
That Posted March 14, 2019 Author Share Posted March 14, 2019 Так. Ниже у меня проверяется длина следующим путём:if ( strlen( $pass_a ) < 4 ) { $form_errors['password'][$this->lang->words['pass_too_short']] = $this->lang->words['pass_too_short']; }Далее захожу в настройки, во время изменения пароля указываю длину нового пароля в 2-3 символа. Пароль успешно меняется. Link to comment Share on other sites More sharing options...
newbie Posted March 14, 2019 Share Posted March 14, 2019 Далее захожу в настройки, во время изменения пароля указываю длину нового пароля в 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 2 Link to comment Share on other sites More sharing options...
That Posted March 14, 2019 Author Share Posted March 14, 2019 А если кроме длины строки нужно проверить !preg_match("/^[-a-zA-Z0-9_]+$/i"? Ведь судя по описанию можно лишь получить внутреннюю кодировку. Link to comment Share on other sites More sharing options...
newbie Posted March 14, 2019 Share Posted March 14, 2019 Ведь судя по описанию можно лишь получить внутреннюю кодировку. Я написал, чтобы использовали mb_strlen вместо strlen.Мой комментарий относился к Ниже у меня проверяется длина следующим путём:if ( strlen( $pass_a ) { $form_errors['password'][$this->lang->words['pass_too_short']] = $this->lang->words['pass_too_short']; } Link to comment Share on other sites More sharing options...
Gendrixon Posted March 18, 2019 Share Posted March 18, 2019 Добрый день. Тоже заинтересовал данный вопрос, потому как нужно запретить менее 6ти символов и всякие там кавычки в изменяемом пароле. Ознакомившись с темой я понял что я ничего не понял. У нас есть путь:index.php?app=core&module=usercp&tab=core&area=emailСудя по всему он ведёт к файлу /applications/core/modules_public/usercp/ и там лежит файл manualResolver.php. Открыв его я попал в тупик. Либо я пришёл не туда, либо я не могу понять куда тут добавить проверку. Link to comment Share on other sites More sharing options...
siv1987 Posted March 18, 2019 Share Posted March 18, 2019 Судя по всему он ведёт к файлу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'] ); } Link to comment Share on other sites More sharing options...
Gendrixon Posted March 18, 2019 Share Posted March 18, 2019 Прошу прощения, но я внимательно перечитал данную информацию и перепроверил, не работает. Затем я убрал свои ключи языка и подставил ваши. Ничего... После чего я вовсе просто скопировал ваш код и заменил свой. Не помогло. Вот код данного файла. Текущая версия форума 3.4.9. Link to comment Share on other sites More sharing options...
siv1987 Posted March 18, 2019 Share Posted March 18, 2019 Проверил, все работает. Это можно увидеть по еррор блоку который появляется сверху.Естественно эти лэнги не существуют, их нужно создать в языке, либо написать сообщение ошибки вместо них. Link to comment Share on other sites More sharing options...
Gendrixon Posted March 18, 2019 Share Posted March 18, 2019 (edited) @siv1987, Так дело то сейчас не в том, что видны ошибки или нет :). Я залогинился, меняю пароль на любой односимвольный. Мне форум пишет что пароль успешно изменён. Тут же я ввожу свой новый пароль, который я до этого забил в 1 символ и меняю его на 2 символа. Соответственно система проверяет ранее изменёный пароль и так как всё успешно - меняет его ещё раз на 2х символьный :) Edited March 18, 2019 by Gendrixon Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now