Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]pomoc w wyrażeniu regularnym, wyrażenie regularne
tukan
post 13.07.2012, 20:30:58
Post #1





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 19.06.2011

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


Witam,
Czy może ktoś mi pomóc napisać wyrażenie regularne sprawdzające hasło, które powinno zawierać 5-15 znaków, składające się z dozwolonych znaków, z jakich składają się zazwyczaj na innych stronach ( przy czym nie musi być wymóg, że musi być cyfra, etc.)
Pozdrawiam! smile.gif

Ten post edytował tukan 13.07.2012, 20:31:26
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
Aware
post 13.07.2012, 21:22:17
Post #2





Grupa: Zarejestrowani
Postów: 8
Pomógł: 1
Dołączył: 13.07.2012
Skąd: Wejherowo

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


Po co używać wyrażeń regularnych skoro mamy strlen() w php.

www.php.net/manual/pl/function.strlen.php

  1. if(strlen($password) < 5) {
  2. // haslo za krotkie
  3. }
  4. else if(strlen($password) > 15) {
  5. // haslo za dlugie
  6. }


Ten post edytował Aware 13.07.2012, 21:34:50
Go to the top of the page
+Quote Post
Niktoś
post 13.07.2012, 21:35:25
Post #3





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

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


Strlen bada długość ciągów jednak nie zbada znaków w nich występujących.Dlatego przeważnie do walidacji używa się pregmatch i wyrażeń regularnych.
Spróbuj:
Cytat
"^(?:[0-9a-zA-ZąćęłńóśźżĄĆĘŁŃÓŚŹŻ]{5,15})$"

jeśli chcesz dodatkowe znaki np kropka to dodajesz w kwadratowym nawiasie:
Cytat
^(?:[0-9a-zA-ZąćęłńóśźżĄĆĘŁŃÓŚŹŻ.]{5,15})$


Ten post edytował Niktoś 13.07.2012, 21:36:05
Go to the top of the page
+Quote Post
Aware
post 13.07.2012, 21:40:36
Post #4





Grupa: Zarejestrowani
Postów: 8
Pomógł: 1
Dołączył: 13.07.2012
Skąd: Wejherowo

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


Cytat
hasło, które
powinno zawierać 5-15 znaków, składające
się z dozwolonych znaków, z jakich składają
się zazwyczaj na innych stronach ( przy
czym nie musi być wymóg, że musi być
cyfra, etc.)


Chyba była mowa o sprawdzeniu długości hasła, czyli samo strlen() wystarczy :-)
Go to the top of the page
+Quote Post
Niktoś
post 13.07.2012, 21:44:46
Post #5





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

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


Cytat
wyrażenie regularne sprawdzające hasło

Czytaj uważnie.
Twoim sposobem skazujesz użytkownika na ataki xss.
Jeśli już chcesz rozdzielić błędy na hasło długie,krótkie,nieprawidłowe to użyj i pregmatch i strlen().

Ten post edytował Niktoś 13.07.2012, 21:46:10
Go to the top of the page
+Quote Post
abort
post 13.07.2012, 21:51:49
Post #6





Grupa: Zarejestrowani
Postów: 590
Pomógł: 107
Dołączył: 25.10.2011

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


@Aware: Aha, a jak za pomocą strlen sprawdzisz, czy konkretny znak w haśle może być stosowany?

@tukan:
Generalnie ja bym zrobił to "na dwa".
Po pierwsze, sprawdził długośc hasła (to co pisał Aware).
Po drugie, sprawdził, czy w haśle nie są zawarte "niedozwolone" znaki. I użył preg_replace, na przykład tak:
  1. $pass = "1qa2ws3ed4rf5tg6yh";
  2. $allow = "/[asdfghjkl12345123]/";
  3. if (preg_replace ($allow, "", $pass)) echo "Niedozwolone znaki.";

Dozwolone znaki otaczamy ukośnikami i nawiazami kwadratowymi.
Jeśli chcesz, aby któryś z tych znaków był dozwolony, poprzedzasz backslashem: \
Jeśli backslash ma być dozwolonym wpisujesz go dwa razy: \\
Wszystkie litery (małe) możesz skrócić do [a-z], wszystkie duże do [A-Z], a wszystkie małe i duże do [a-zA-Z]. Cyfry do [0-9].
Jeśli znak "-" ma być dozwolony, musisz go umieścić na początku lub końcu
I tak litery (niezależnie od wielkości) i cyfry i znak "minus" skrócisz do [-a-zA-Z0-9].
Więcej nie piszę - poczytaj manual.
Go to the top of the page
+Quote Post
Niktoś
post 13.07.2012, 21:54:10
Post #7





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

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


Preg replace -a po co nadpisywać?
Go to the top of the page
+Quote Post
Aware
post 13.07.2012, 21:55:49
Post #8





Grupa: Zarejestrowani
Postów: 8
Pomógł: 1
Dołączył: 13.07.2012
Skąd: Wejherowo

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


Wątpie w to skoro i tak używasz jakiegoś hasha np. sha1, a jak ktoś będzie síę chciał wkraść na strone to i tak się włamie :-)
Go to the top of the page
+Quote Post
Niktoś
post 13.07.2012, 22:02:38
Post #9





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

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


Cytat
Wątpie w to skoro i tak używasz jakiegoś hasha np. sha1, a jak ktoś będzie síę chciał wkraść na strone to i tak się włamie :-)
-to nie jest tylko kwestia deszyfrowania hasła,co jest praktycznie bardzo trudne, lecz możliwość wstrzyknięcia złośliwego kodu.
Może poczytaj o xss.
  1. $mojeHaslo="Ściśle tajne hasło";
  2. if (!preg_match("^(?:[0-9a-zA-ZąćęłńóśźżĄĆĘŁŃÓŚŹŻ]{5,15})$", $mojeHaslo)) {
  3. echo "Nieprawidłowe hasło.";
  4. }else{
  5. $hash=sha1($mojeHasło);
  6.  
  7. }


Ten post edytował Niktoś 13.07.2012, 22:44:58
Go to the top of the page
+Quote Post
Aware
post 13.07.2012, 22:20:34
Post #10





Grupa: Zarejestrowani
Postów: 8
Pomógł: 1
Dołączył: 13.07.2012
Skąd: Wejherowo

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


Nie musisz mnie odsyłać do lektury bo wiem co to jest xss i na czym polegają ataki. :-)
Go to the top of the page
+Quote Post
tukan
post 14.07.2012, 17:30:27
Post #11





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 19.06.2011

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


Dzięki za pomoc smile.gif
Chodziło mi właśnie o to, co napisał mi @Niktoś.
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: 14.08.2025 - 03:30