![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 81 Pomógł: 0 Dołączył: 30.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Mam bazę nazwisk z informacjami. Rekordy wywołuję przez zmienną nazwisko=xxxxx
Jednak żeby się zabezpieczyć przed zhakowaniem całej bazy przez wpisanie nazwisko=a% lub nazwisko=a_ stworzyłem ifa if(!preg_match("/%/", $nazwisko)&&!preg_match("/_/", $nazwisko)) i działa super - tylko że jest zbyt dokładny - bo są nazwiska takie jak d'Haute (z apostrofem) i to nazwisko jest wyłapywane jako zhakowanie jest jakiś sposób żeby zostawić zabezpieczenie ale żeby apostrof nie był brany pod uwagę? I skąd ten apostrof skoro skryptu nie uczulałem na niego? a może to zabezpieczenie robi się inaczej ? podgląd bazy jest tu: http://powstanie.okiem.pl Ten post edytował Dopler 18.06.2012, 18:07:11 -------------------- Genealogia Polaków
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 87 Pomógł: 12 Dołączył: 31.05.2006 Ostrzeżenie: (0%) ![]() ![]() |
może powinieneś pokombinować z funkcją addslashes
![]() |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 81 Pomógł: 0 Dołączył: 30.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
kurcze ... muszę chyba jeszcze raz opisać problem dokładniej - bo przedtem zrobił skrót i widzę że chyba problem leży gdzie indziej
wyszukiwanie mam 2 stopniowe - najpierw wg litery szuka zestawów pierwszych trzech liter a potem wg tego zestawu szuka nazwisk nazwisko=d'Haute - działa ale nie działa wcześniejszy stopień w tym wcześniejszym stopniu mam jeszcze liczenie znaków if - wygląda więc tak if(strlen($lettertwo)==3&&!preg_match("/%/", $lettertwo)&&!preg_match("/_/", $lettertwo) gdy wywalam strlen - to funkcja działa - a więc to w niej jest coś co chyba nie zlicza apostrofu (a także spacji) próbowałem z mb_strlen oraz iconv_strlen - i bez rezultatu -------------------- Genealogia Polaków
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 366 Pomógł: 261 Dołączył: 23.09.2008 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
po prostu wywal wszystkie _ i % - bo jak rozumiem korzystasz z LIKE
![]() -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 81 Pomógł: 0 Dołączył: 30.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
tak korzystam z LIKE - ale nie mogę wywalić _ i % bo wtedy można łatwo wyświetlić wszystkie pozycje bazy - zresztą to działa
problem leży w liczeniu strlen apostrof liczy jak 2 znaki a spację omija -------------------- Genealogia Polaków
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 1 366 Pomógł: 261 Dołączył: 23.09.2008 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
1. Wywalasz % i _, robisz strlen, dodajesz swoje % i _ (w zależności co używasz)
2. Jak źle liczy? może złe kodowanie? może spróbuj mb_strlen ? nigdy nie spotkałem się by strlen mi źle liczył znaki ![]() -------------------- |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 81 Pomógł: 0 Dołączył: 30.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
sorry- ale ja po prostu nie rozumiem co znaczy "wywalasz _%" bo przecież to są trzy osobne warunki w bramce logicznej - warunek długości i nie występowania tych znaków
Rozwiązałem problem
działa - ale czuję że to jest strasznie dookoła - jak siekierą. To chyba powinno być zrobione jakimś kodowaniem ... Nie jestem pewien czy to wyczerpuje wszystkie możliwości, poza tym nie wiem czy tego i tak nie można jakoś obejść może jest lepszy sposób? baza jest w UTF8 -------------------- Genealogia Polaków
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 09:20 |