![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 228 Pomógł: 7 Dołączył: 15.08.2012 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
Witam
przeszukałem trochę internet i nie mogę znaleźć konkretnego rozwiązania a jest ono za pewne bardzo proste i nie będzie stanowiło dla Was wyjadaczy starych PHP-owców żadnego problemu. (nie jest to moja funkcja) hasło od 8 - 80 znaków w tym przynajmniej jedna wielka litera i przynajmniej jedna cyfra ponieważ użyte tutaj zostało przewidywanie (którego do końca nie rozumiem) potrzebuję sprawdzać hasło w którym są przynajmniej 2 duże litery i dwie cyfry (znak specjalny może być ale nie musi) kombinowałem tak
tu wszystko działa pod warunkiem, że dopasowania są spełniane po kolei a ja chcę, żeby w haśle duże litery lub cyfry były w obojętnie którym miejscu a nie np na końcu. a więc próbowałem tak oczywiście ten ostatni przykład nie działa tak jak powinien jeżeli macie linka do szczegółowego opisu zagadnienia albo możecie mi to wytłumaczyć to z góry dziękuję pozdo p.s. -nie zależy mi na gotowcu raczej na wytłumaczeniu, żebym zrozumiał Ten post edytował adamantd 15.08.2012, 12:37:48 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 590 Pomógł: 107 Dołączył: 25.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Crozin dobrze gada. Dodatkowo przy jego wersji w bardzo prosty sposób (dodając jeden warunek AND) możesz rozszerzyć wymagania na hasło np. w ten sposób, że będzesz wymagał jakiejś litery lub lakiegoś znaku specjalnego.
Regexpy są fajne - ale w ten sposób to się zajedziesz. Poza tym, pamiętając, że preg_match zwraca liczbę dopasowanych elementów i używając zaproponowanego Ci sposobu, jesteś w stanie jeszcze bardziej skonkretyzować wymagania na hasło, np. conajmniej dwie duże litery, conajmniej dwie małe litery i conajmniej jedna cyfra, i hasło nie krótsze niż 8 znaków: Kod $upper = preg_match('/[A-Z]'/, $entered_pass); $lower = preg_match('/[a-z]'/, $entered_pass); $digits = preg_match('/[0-9]'/, $entered_pass); if ( (strlen ($entered_pass) >= 8) && ($upper >=2) && ($lower >=2) && (digits > 0) ) { // kod dla hasła poprawnego } else { // kod dla hasła niepoprawnego } Z regexpem tego nie zrobisz. Zresztą, może i zrobisz - ale co się napocisz, to Twoje. Wyrażenia regularne są fajne (i ja je bardzo lubię), ale nie używajmy ich na siłę tam, gdzie da się coś zrobić prościej i szybciej (w sensie pisania kodu na pewno szybciej, w sensie czasu wykonywania przypuszczam, że też) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 10.10.2025 - 09:42 |