Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP]Blokada wybranych znaków w formularzach
Forum PHP.pl > Forum > Przedszkole
-czytacz-
Witam,

Chcę w formularzach uniemożliwić wprowadzanie 4 znaków:
' " < >

Oczywiście w temacie bezpieczeństwa. Zamiana znaków na encje mnie nie urządza, urywanie ich i wprowadzanie reszty do bazy również. Chcę aby w przypadku wystąpienia takiego znaku wyświetlił mi się komunikat, że użyto niedozwolonych znaków. Czy jest na to jakaś inna metoda niż "ręczne" wklepanie procedury typu:
- wybierz string
- szukaj znaków
- zwróć błąd?

JS odpada, chcę zabezpieczyć serwis od strony serwera. Klient może sobie wyłączyć obsługę JS i całe zabezpieczenie bierze w łeb.
nospor
Cytat
Czy jest na to jakaś inna metoda niż "ręczne" wklepanie procedury typu:
- wybierz string
- szukaj znaków
- zwróć błąd?
To tak jakbyś zapytał: czy można inaczej ruszyć samochodem niż
- włożyć kluczyk
- przekręcic
- wrzucic bieg i odjechać

Nie, nie ma innej metody smile.gif
Niktoś
Można by użyć wyrażeń regularnych do filtrowania danych wejściowych z inputów.
nospor
Niktoś ale to ni mniej ni więcej jest wymieniony podpunkt "- szukaj znaków", który autorowi się przecież nie podoba smile.gif
Niktoś
Faktycznie.Ech-zmień Mu układ klawiatury ,może się nie połapie gdzie jest <,lub>,',"-zawsze to jakiś sposób laugh.gif
-czytacz-
od razu tak szydzić z przedszkolaka... tongue.gif

Bardziej chodziło mi o to czy może jest jakaś gotowa funkcja, w podobie do htmlspecialchars, która już ma wszystko przygotowane. Nie lubię wynajdywać koła od nowa.
nospor
A kto tu szydzi? Zadałeś pytanie to ci grzecznie wyjaśniono co i jak tongue.gif

Nie ma funkcji, która robi te trzy rzeczy na raz. Do szukania możesz użyć wyrażeń regularnych jak wspomniał Niktoś
Niktoś
Podobną funkcją do htmlspecialchars jest htmlentities,ale chyba także Cię to nie zainteresuje.Niestety nie ma tak dobrze,trzeba samemu troszeczkę się pomęczyć,żeby zabezpieczyć formularz.
-czytacz-
Spoko. Dzięki za info, biorę się do roboty bo czasu szkoda smile.gif
by_ikar
Bardzo proste wyrażenie załatwić może całą sprawę:

Kod
<?php


$dane_z_formularza = 'abcdef "< >"';

if(preg_match('#^[^><"]+$#is', $dane_z_formularza))
{
    echo 'poprwne dane';
} else
{
    echo 'błędne dane';
}


w nawiasie kwadratowym zaraz po daszku "^" podajesz znaki które mają nie wsytąpić w ciągu, w przypadku wystąpienia wyrażenie nie spełni wymagań i preg_match zwróci 0.
abort
Cytat(nospor @ 16.11.2011, 20:39:59 ) *
To tak jakbyś zapytał: czy można inaczej ruszyć samochodem niż
- włożyć kluczyk
- przekręcic
- wrzucic bieg i odjechać

Nie, nie ma innej metody smile.gif

Był kiedyś (i czasami można na drodze jeszcze spotkać) taki wynalazek, jak Polski Fiat 126p. Potocznie zwany "maluchem". Odpalałem go kijem. Owszem, zdaję sobie sprawę, że wielu nie uznaje tego czterokołowca jako samochód, ale jednak maluch był samochodem, bo aby nim kierować, potrzebne było prawo jazdy smile.gif

P.S.
Przepraszam za offtopic smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.