That 0 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? нужно это же сообщение показать "на лету". И помогите пожалуйста найти смену пароля, чтобы сделать то же самое. Спасибо! Изменено 13 марта 2019 пользователем That Поделиться сообщением Ссылка на сообщение
siv1987 2628 03/13/19 21:09 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 Поделиться сообщением Ссылка на сообщение
That 0 03/13/19 21:39 Да, так JS заработал. Спасибо большое! А где искать смену пароля из личного кабинета? Потому как пользователь уже после регистрации может прописать "плохой" пароль в своём аккаунте. Поделиться сообщением Ссылка на сообщение
siv1987 2628 03/13/19 22:00 admin/applications/core/modules_public/global/lostpass.php if( $pass_a != $pass_b ) { $this->registry->output->showError( 'pass_no_match', 10187 ); } Поделиться сообщением Ссылка на сообщение
That 0 03/13/19 23:26 Что-то я немного не пойму что тут делать, зато понял что новый пароль пользователь может мало того указать любым символом что мне не нужно, так и ещё длиной в 1 символ. Что тоже очень плохо. Поделиться сообщением Ссылка на сообщение
siv1987 2628 03/14/19 07:44 Ниже этого кода вставляете проверку пароля по длине или по символам. Поделиться сообщением Ссылка на сообщение
That 0 03/14/19 10:09 Так. Ниже у меня проверяется длина следующим путём:if ( strlen( $pass_a ) < 4 ) { $form_errors['password'][$this->lang->words['pass_too_short']] = $this->lang->words['pass_too_short']; }Далее захожу в настройки, во время изменения пароля указываю длину нового пароля в 2-3 символа. Пароль успешно меняется. Поделиться сообщением Ссылка на сообщение
newbie 1723 03/14/19 10:30 Далее захожу в настройки, во время изменения пароля указываю длину нового пароля в 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 Поделиться сообщением Ссылка на сообщение
That 0 03/14/19 10:56 А если кроме длины строки нужно проверить !preg_match("/^[-a-zA-Z0-9_]+$/i"? Ведь судя по описанию можно лишь получить внутреннюю кодировку. Поделиться сообщением Ссылка на сообщение
newbie 1723 03/14/19 11:10 Ведь судя по описанию можно лишь получить внутреннюю кодировку. Я написал, чтобы использовали mb_strlen вместо strlen.Мой комментарий относился к Ниже у меня проверяется длина следующим путём:if ( strlen( $pass_a ) { $form_errors['password'][$this->lang->words['pass_too_short']] = $this->lang->words['pass_too_short']; } Поделиться сообщением Ссылка на сообщение
Gendrixon 0 03/18/19 12:01 Добрый день. Тоже заинтересовал данный вопрос, потому как нужно запретить менее 6ти символов и всякие там кавычки в изменяемом пароле. Ознакомившись с темой я понял что я ничего не понял. У нас есть путь:index.php?app=core&module=usercp&tab=core&area=emailСудя по всему он ведёт к файлу /applications/core/modules_public/usercp/ и там лежит файл manualResolver.php. Открыв его я попал в тупик. Либо я пришёл не туда, либо я не могу понять куда тут добавить проверку. Поделиться сообщением Ссылка на сообщение
siv1987 2628 03/18/19 13:30 Судя по всему он ведёт к файлу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'] ); } Поделиться сообщением Ссылка на сообщение
Gendrixon 0 03/18/19 13:44 Прошу прощения, но я внимательно перечитал данную информацию и перепроверил, не работает. Затем я убрал свои ключи языка и подставил ваши. Ничего... После чего я вовсе просто скопировал ваш код и заменил свой. Не помогло. Вот код данного файла. Текущая версия форума 3.4.9. Поделиться сообщением Ссылка на сообщение
siv1987 2628 03/18/19 13:50 Проверил, все работает. Это можно увидеть по еррор блоку который появляется сверху.Естественно эти лэнги не существуют, их нужно создать в языке, либо написать сообщение ошибки вместо них. Поделиться сообщением Ссылка на сообщение
Gendrixon 0 03/18/19 13:56 (изменено) @siv1987, Так дело то сейчас не в том, что видны ошибки или нет :). Я залогинился, меняю пароль на любой односимвольный. Мне форум пишет что пароль успешно изменён. Тут же я ввожу свой новый пароль, который я до этого забил в 1 символ и меняю его на 2 символа. Соответственно система проверяет ранее изменёный пароль и так как всё успешно - меняет его ещё раз на 2х символьный :) Изменено 18 марта 2019 пользователем Gendrixon Поделиться сообщением Ссылка на сообщение