Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Sprawdzenie poprawności hasła
raqqos
post 7.07.2005, 23:15:39
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 28.06.2005
Skąd: Płock

Ostrzeżenie: (10%)
X----


Jak sprawdzić hasło, które musi być 8 znakowe i zawierać co najmniej 2 cyfry?
Ja to zrobiłem tak:
  1. <?php
  2.  
  3.  
  4. function prawidlowe_haslo($haslo)
  5. {
  6. // sprawdzenie hasła
  7. if (strlen($haslo) > 8 || strlen($haslo) < 16)
  8. {
  9. $wyr = &#092;"^(([a-zA-Z-_]+)([0-9]{2}))$\";
  10. if (ereg($wyr, $haslo))
  11. {
  12. return true;
  13. }
  14. else
  15. {
  16. return 'Nie poprawny format hasła - musi zawierać co najmniej 2 cyfry!';
  17. }
  18. }
  19. else
  20. {
  21. return 'Nie poprawna długość hasła - musi mieć od 8 do 16 znaków!';
  22. }
  23.  
  24. ?>

ale jakoś nie chce zadziałać. Jest problem z wyr. regularnym. Ma ktoś pomysła?

Ten post edytował raqqos 7.07.2005, 23:16:58
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
crash
post 7.07.2005, 23:23:25
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----


Zastosuj po prostu takie wyrażenie reg.: /[0-9]+.*[0-9]+/


--------------------
Go to the top of the page
+Quote Post
sobstel
post 8.07.2005, 09:34:27
Post #3





Grupa: Zarejestrowani
Postów: 853
Pomógł: 25
Dołączył: 27.08.2003
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Cytat(raqqos @ 2005-07-07 23:15:39)
[0-9]{2}

jesli sie nie myle to ten fragment powoduje ze maja byc dokladnie 2 cyfry. na co najmniej 2 cyfry powinno byc raczej {2,}. niemniej jednak powyzsza propozycja ktora napisal crashu jest chyba lepszym i zgrabniejszym rozwiazaniem.


--------------------
"If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org
Go to the top of the page
+Quote Post
crash
post 8.07.2005, 10:02:09
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----


Też myślałem z początku o zwykłym [0-9]{2,}, ale taki coś wymagałoby cyfr obo siebie.


--------------------
Go to the top of the page
+Quote Post
sobstel
post 8.07.2005, 10:08:16
Post #5





Grupa: Zarejestrowani
Postów: 853
Pomógł: 25
Dołączył: 27.08.2003
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Cytat(crashu @ 2005-07-08 10:02:09)
Też myślałem z początku o zwykłym [0-9]{2,}, ale taki coś wymagałoby cyfr obo siebie.

koniec końców na bazie twojego przykladu zaproponowalbym cos takiego na sprawdzenie wszystkiego i pozbycie sie strlen

Kod
/^(\w*[0-9]+\w*[0-9]+\w*){8,16}$/


lub z zachowaniem strlen

Kod
/[0-9]+\w*[0-9]+/


--------------------
"If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org
Go to the top of the page
+Quote Post
raqu
post 25.07.2005, 09:00:30
Post #6





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 25.07.2005
Skąd: Płock

Ostrzeżenie: (0%)
-----


Niestety, rozwiązanie ktore podaliscie nie dziala.
robie tak:
  1. <?php
  2.  
  3.  
  4. function prawid_haslo($haslo)
  5. {
  6. $wyr = &#092;"^(w*[0-9]+w*[0-9]+w*){8,16}$\";
  7. $wyr1 = &#092;"^([0-9]+w*[0-9]+)$\";
  8. if (ereg($wyr, $haslo))
  9. return true;
  10. else
  11. return false;
  12. }
  13.  
  14. ?>

Jak widać probowałem obydwu metod. Wpisywalem cyfry na poczatku, w srodku i na koncu hasla no i lipa. Macie jakis inny pomysl? Piszcie ludzie!
Go to the top of the page
+Quote Post
sobstel
post 25.07.2005, 10:18:08
Post #7





Grupa: Zarejestrowani
Postów: 853
Pomógł: 25
Dołączył: 27.08.2003
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Cytat(raqu @ 2005-07-25 09:00:30)
$wyr1 = "^([0-9]+\w*[0-9]+)$";

sprobuj bez znakow ^ i $


--------------------
"If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org
Go to the top of the page
+Quote Post
raqu
post 25.07.2005, 21:44:03
Post #8





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 25.07.2005
Skąd: Płock

Ostrzeżenie: (0%)
-----


Cytat
sopel  napisano 2005-07-25 09:18:08
 
QUOTE (raqu @ 2005-07-25 09:00:30)
$wyr1 = "^([0-9]+\w*[0-9]+)$";

sprobuj bez znakow ^ i $
Spróbowalem. Cześciowo działa. tzn:jescli cyfry sa obok siebie to jest ok. w srodku, na poczatku czy na koncu. Ale jesli ktos zechce ustawic sobie haslo pomiedzy dwiema cyframi lub cos w tym stylu to nie zadziala.

//EDYCJA
Dobra, koncze z wyrazeniami regularnymi. dry.gif
Zrobilem to funkcją:
  1. <?php
  2.  
  3. function prawid_haslo($haslo)
  4. {
  5. $j = 0;
  6. $dlugosc = strlen($haslo);
  7. for($i=0; $i<$dlugosc; $i++)
  8. {
  9. $tab[$i]=substr($haslo, $i, 1);
  10. if (is_numeric($tab[$i]))
  11. $j++;
  12. }
  13. if ($j >= 2)
  14. return true;
  15. else
  16. return false;
  17. }
  18.  
  19. ?>

Szkoda tylko ze wczesniej na to nie wpadlem. tongue.gif

Ten post edytował raqu 26.07.2005, 11:12:11
Go to the top of the page
+Quote Post
8_pasazer_NOSTRO...
post 27.04.2020, 10:28:12
Post #9





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 18.11.2009
Skąd: Legnica

Ostrzeżenie: (20%)
X----


Witam, podepnę się pod temat.

Hasło musi zawierać minimum 10 znaków w tym :
- duże litery
- małe litery
- cyfry
- znaki specjalne (@#!+-%)

Pomoże ktoś.
Go to the top of the page
+Quote Post
Pyton_000
post 29.04.2020, 21:48:12
Post #10





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


wstaw po prostu 5 if-ów i nie kombinuj.
Go to the top of the page
+Quote Post
vokiel
post 30.04.2020, 21:31:59
Post #11





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


Cytat(8_pasazer_NOSTROMO @ 27.04.2020, 11:28:12 ) *
Witam, podepnę się pod temat.

Hasło musi zawierać minimum 10 znaków w tym :
- duże litery
- małe litery
- cyfry
- znaki specjalne (@#!+-%)

Pomoże ktoś.


W takim przypadku trzeba to połączyć w grupy, np:
Kod
(?=(.*[a-z]))(?=(.*[A-Z]))(?=(.*\d))(?=(.*[@#\+\-\%]))


https://regex101.com/r/FdFHSD/1


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 21.06.2025 - 23:55