Mam pytanie odnosnie regexp w operze. W IE oraz FF to wyrazenie dziala, jednak w operze nie. Tzn wyrazenie dziala, ale nawet znaki z poza zakresu traktowane sa jako wystepujace w badanym stringu i illegalChar zwracane jest jako tablica.
re = /[\u0200-\uFFFF]/gi;
illegalChar = pole.value.match(re);
Potrzebuje zrobic sprawdzenie, czy uzytkownik nie wkleil jakis znakow specjalnych unicode do pola tekstowego. Jest to zabezpieczenie przed kopiowaniem dokumentow worda do pola memo. Znaki specjalne worda powoduja bledy zapytan sql-a.
Sprawdzanie po kodach ascii dziala, jednak nie obejmuje calego zakresu dostepnych znakow
Originally posted by rejdzu:
Skoro określasz zakres w ten sposób, to flaga i jest ci niepotrzebna, a powinno działać lepiej. I tak z ciekawości zapytam dlaczego akurat taki zakres?re = /[\u0200-\uFFFF]/gi;
A co do zachowania Opery, to wygląda na błąd (chyba). Inna sprawa, że nie powinien to być aż tak wielki problem, bo tak czy inaczej, sprawdzanie powinno być dodatkowo zorganizowane po stronie serwera.
Poniewaz znaki pasujace koncza sie na \u0200. I aby sie zabezpieczyc i nie sprawdzac reszty ustawiony zostal koniec zakresu unicode czyli \uFFFF. Projekt robiony jest w oparciu o technologie Magic E-Developer i nie ma raczej mozliwosci sprawdzenia wpisanej danej po stronie serwera.
Rzeczywiscie pomoglo usuniecie dodatkowych opcji gi. Dla mnie to nie problem bo blad bedzie zglaszany za kazda proba wyslania formualrza. Po usunieciu pierwszego znaku i submita pojawi sie nastepne ewentualne wystapienie. Jednak jezeli ktos chce od razu dostac sie do tablicy znakow, ktore zostaly znalezione to juz ma problem. Na glownym forum opery zglosil ktos ten blad jako bug.
Originally posted by rejdzu:
Ale za globalne wyszukiwanie odpowiada flaga g, a problem powoduje flaga i, więc nie rozumiem w czym problem.Rzeczywiscie pomoglo usuniecie dodatkowych opcji gi. (...) Jednak jezeli ktos chce od razu dostac sie do tablicy znakow, ktore zostaly znalezione to juz ma problem.
EDIT: Jeśli nie potrzebujesz globalnego wyszukiwania, to raczej używaj search a nie match.
Jeśli za pomocą JS będziesz się bronił przed ewentualnym atakiem SQL Injection to... gratulacje. Lepiej już teraz dopracuj zapytania do bazy MySQL.