Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] preg_match a polskie litery i klasy znaków
bartu$
post
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 27.06.2004

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


Szukam sposobu jak zabezpieczyć pole z imieniem i nazwiskiem przed email header injection.

Pole to sklejam w nagłówku maila:
Reply-to: Imie i nazwisko <adres@email.pl>

Adres email to osobne pole. Mi chodzi tylko o imie i nazwisko.
Pomyślałem o preg_match i klasie znaków. W końcu może się zdarzyć obcojęzyczne imie i nazwisko.

Mój pomysł:
  1. preg_match('/[[:alnum:] ]+/u', "ĘÓĄŚŁŻŹĆŃ ęóąśłżźćń");


Działa (IMG:style_emoticons/default/smile.gif) Ale czytam w dokumentacji php.net, że
Cytat
In UTF-8 mode, characters with values greater than 128 do not match any of the POSIX character classes.


Polskie znaki mają wyższy kod niż 128 a mimo wszystko działa.

1. Zastanawiam się czy to nie przypadek?
2. Jeśli to przypadek to jak Wy zabezpieczylibyście to pole?

Ten post edytował bartu$ 2.12.2012, 12:31:01
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


@Sebek87: Unikod definiuje bodajże około 600 znaków, które są poprawnymi literami. Solidna aplikacja powinna je wszystkie przepuszczać. Dopisywanie każdej z osobna to idiotyzm.
@!*!: \w to odpowiednik a-zA-Z0-9_, więc nie wystarczy - brak obsługi liter niełacińskich.
@bartu$: ^[\pL ]+$ - to wyrażenie, którego szukasz.

EDIT:
@bartu$: a-z nie łapie polskich znaków.

Ten post edytował Crozin 2.12.2012, 16:20:10
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 3.10.2025 - 05:05