![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 884 Pomógł: 231 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Naszukałem się trochę, ale nigdzie nie dostałem jednoznacznej odpowiedzi. Chcialbym się dowiedzieć jak bez żadnych kłopotów wprowadzać do bazy danych takie rzeczy jak nazwy miast, imiona, nazwiska które zawierają oczywiście znaki diaktryczne, a że mój kłopot nie zamyka się na języku polskim, to dlatego pytam jak zrobić bezpieczne sprawdzenie takich nazw ? Do tej pory ten problem rozwiązałem stosując znaki kilku krajów, ale nie wydaje mi sie to eleganckie w przypadku kiedy na świecie jest więcej języków, szczególnie miasta mają różną pisownie. Dodatkowo chciałbym taki kod zabezpieczyć przed SQL Injection aby nie były wpisane znaki takie jak /* */ czy litery i znaki zapisane szestnastkowo. :Edit: Poprawiłem trochę temat, aby dawał więcej informacji o problemie. Ten post edytował Tomplus 31.03.2011, 10:47:07 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Litery w PCRE to \pL i m.in. przy pomocy tego możesz sprawdzać czy coś jest zwykłym tekstem: http://pl.php.net/manual/en/regexp.reference.unicode.php
Cytat Dodatkowo chciałbym taki kod zabezpieczyć przed SQL Injection aby nie były wpisane znaki takie jak /* */ czy litery i znaki zapisane szestnastkowo. PDO czy coś bazującego na PDO oraz wykorzystanie prepared statements
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 884 Pomógł: 231 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) ![]() ![]() |
Nie wiedziałem o tym (chodzi mi o litery w PCRE), ale widzę że warto o tym więcej przeczytać.
Zastanawiam się dlaczego o tym nie znalazłem na innych stronach, również zagranicznych. wszędzie jest sprawdzanie znaków diaktrycznych w funkcjach bez zastosowania sprawdzenia czy jest to tekst czy nie. Thx. Jestem ciekaw co źle robie: wpisuje string $miasto = 'Będ@zin'; potem: Wynik: brak błędu |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
1. Powieneś dodać flagę u (małe U)
2. Wzorzec określa, że ma być jedna lub więcej liter. Jest w tekście jedna lub więcej liter? Jest, więc pasuje. Podpowiedź: ^, $ |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 884 Pomógł: 231 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) ![]() ![]() |
@Crozin
W koncu sam wymyśliłem zapytanie i zastosowałem bez /u Szukałem w manualu dla PCRE na php.net ale nie znalazłem opisu flag na koncu wyrażenia. Czy podpowiesz mi adres strony w ktorym jest więcej opisów flag aby się doinformować na ten temat ? bo wiem że jest jeszcze /i i chyba /d ale opisu tego nie widziałem. Jednakże kod wygląda po zastosowaniu ^ i $ w ten sposób: Kod if (preg_match("/^([a-ż.-\s\pL]){4,36}$/", $miasto)) {} Dlatego teraz nazwy są akceptowane takie jak trzeba nie ważne czy to Będzin, Królewska Wola czy München. jak dodam liczbę 2 lub jakies liczby to przestaje akceptować, jak również nie działa przy zastosowaniu obcych znaków z wyjątkiem KROPKI oraz myślnika, bo czasami zdarzają się podwójne nazwy miast. np. Bielsko-Biała. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 02:56 |