Mariollo Posted July 11, 2014 Share Posted July 11, 2014 W jaki sposób mogę ustawić wymagane znaki do hasła przy rejestracji użytkowników? W chwili obecnej każdy może sobie ustawić obojętnie jakie, o ile ma 5 znaków, nawet przykładowo "aaaaa". Chciałbym dodać wymagane 8 znaków, duże i małe litery oraz cyfry. Link to comment Share on other sites More sharing options...
vekia Posted July 11, 2014 Share Posted July 11, 2014 trzeba zmodyfikować klasę Validate.php sprawa jest dość skomplikowana, bo trzeba bawić się regexpami czyli wyrażeniami regularnymi zacząć trzeba od zwiększenia ilości znaków na początku klasy validate jest kod: const PASSWORD_LENGTH = 5; zmieniasz wartość na 8 jest tam funkcja public static function isPasswd($passwd, $size = Validate::PASSWORD_LENGTH) { return (Tools::strlen($passwd) >= $size && Tools::strlen($passwd) < 255); } dodajesz do niej regexpy sprawdzające czy ciąg zawiera małe / duże znaki coś takiego chyba powinno załątwić sprawę ^.*(?=.{7,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*$ z tego regexpa korzystasz w ten sposób $pattern = "^.*(?=.{7,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*$"; preg_match($pattern,$password);i zwraca true albo false (w zależnosci czy haslo spełnia założenia regexpa) Link to comment Share on other sites More sharing options...
Mariollo Posted July 11, 2014 Author Share Posted July 11, 2014 Dzięki, mam coś takiego: /** * Check for password validity * * @param string $passwd Password to validate * @param int $size * @return boolean Validity is ok or not */ public static function isPasswd($passwd, $size = 5) { return (Tools::strlen($passwd) >= $size && Tools::strlen($passwd) < 255); Czyli size zmieniam na tyle ile chcę, a sprawdzanie małych znaków w którym dokładnie miejscu dodaję? Link to comment Share on other sites More sharing options...
vekia Posted July 11, 2014 Share Posted July 11, 2014 tę funkcję trzeba trochę rozbudować public static function isPasswd($passwd, $size = Validate::PASSWORD_LENGTH){ if (preg_match("^.*(?=.{7,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*$", $passwd) && (Tools::strlen($passwd) >= $size && Tools::strlen($passwd) < 255)){ return true; } else { return false; } } 1 Link to comment Share on other sites More sharing options...
Mariollo Posted July 14, 2014 Author Share Posted July 14, 2014 (edited) Niestety nie działa mi ta formuła. Na początku validate.php nie mam kodu, który odpowiada za ilość znaków w haśle (const PASSWORD_LENGTH = 5;), więc zmieniłem w podanym przez Ciebie kodzie: PASSWORD_LENGTH na stałą wartość 5. Niestety przy próbie rejestracji i podaniu obojętnie jakiego hasła pojawia się komunikat, że hasło jest nieprawidłowe. Czy coś można jeszcze z tym zrobić? Edited July 14, 2014 by Mariollo (see edit history) Link to comment Share on other sites More sharing options...
vekia Posted July 14, 2014 Share Posted July 14, 2014 ale zmieniłeś tylko wartość tej stałej, czy wykorzystałeś również to wyrażenie regularne? możesz pokazać jak wygląda CAŁA funkcja po zmianach? Link to comment Share on other sites More sharing options...
Mariollo Posted July 14, 2014 Author Share Posted July 14, 2014 w tej chwili mam tak i działa (ale można wpisać 5 takich samych znaków jako hasło): public static function isPasswd($passwd, $size = 5) { return (Tools::strlen($passwd) >= $size && Tools::strlen($passwd) < 255); } gdy zmienię na taką: public static function isPasswd($passwd, $size = Validate::5){ if (preg_match("^.*(?=.{7,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*$", $passwd) && (Tools::strlen($passwd) >= $size && Tools::strlen($passwd) < 255)){ return true; } else { return false; } } to podaje, że hasło jest nieprawidłowe niezależnie co wpiszę Link to comment Share on other sites More sharing options...
vekia Posted July 14, 2014 Share Posted July 14, 2014 namotałem z tym pregiem, przepraszam, trochę to wyrażenie szalone i zapomniałem o jednej rzeczy powinno wyglądać tak: preg_match("/^.*(?=.{7,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*$/", $passwd) finalna wersja: public static function isPasswd($passwd, $size = Validate::5){ if (preg_match("/^.*(?=.{7,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*$/", $passwd) && (Tools::strlen($passwd) >= $size && Tools::strlen($passwd) < 255)){ return true; } else { return false; } } Link to comment Share on other sites More sharing options...
LCDK Posted August 11, 2016 Share Posted August 11, 2016 namotałem z tym pregiem, przepraszam, trochę to wyrażenie szalone i zapomniałem o jednej rzeczy powinno wyglądać tak: preg_match("/^.*(?=.{7,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*$/", $passwd) finalna wersja: public static function isPasswd($passwd, $size = Validate::5){ if (preg_match("/^.*(?=.{7,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*$/", $passwd) && (Tools::strlen($passwd) >= $size && Tools::strlen($passwd) < 255)){ return true; } else { return false; } } Z Prestashop 1.6.1.6 nie działa nie idzie się zalogować do panelu administratora - po podaniu hasła wyświetla zawartość różnych tabel (tryb debug), nie idzie wygenerować nowego hasła. Widać nie wystarczy zmiana tylko w tym jednym pliku. Link to comment Share on other sites More sharing options...
vekia Posted August 11, 2016 Share Posted August 11, 2016 wyświetla zawartość różnych tabel nie sądzę, że jest to wywołane zmianą klasy validate bowiem nie odpowiada ona w żadnym wypadku za wyświetlanie się zawartości bazy danych, zwłaszcza w momencie podawania hasła. Link to comment Share on other sites More sharing options...
LCDK Posted August 11, 2016 Share Posted August 11, 2016 (edited) Jak zrobimy coś takiego w pliku validate to strona się rozjedzie ( po wpisaniu prawidłowego hasła ) - nie wyświetla informacji o błędnym haśle tylko białą strone ( w debug brak błedu ) public static function isPasswd($passwd, $size = Validate::PASSWORD_LENGTH) { return false; } public static function isPasswdAdmin($passwd) { return false; } Funkcja sprawdza tylko długość hasła - wygląda to tak jakby pierw było porównywane wprowadzone hasło z tym co jest w bazie mysql zaczyna inicjować stronę administratora i potem sprawdza czy długość hasła jest ok. Błąd jest chyba gdzieś w samej prescie funkcja isPasswdAdmin nie jest wykorzystywana podczas logowania do panelu administratora bo mam ustawione hasło 10 znakowe jak zmienię zmienna const ADMIN_PASSWORD_LENGTH = 14; to i tak można się zalogować bez żadnego błędu Edited August 11, 2016 by LCDK (see edit history) 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