Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Walidacja znaków specjalnych przez preg_match
Forum PHP.pl > Forum > Przedszkole
Terrorizer
Cześć,
Mam wrażenie, że nie rozumiem działania preg_match.
Próbuję sprawdzić czy dane z formularza zawierają znaki specjalne. Niezależnie od wyniku, powinno się coś wyświetlić na ekranie.
Niestety żaden z returnów się nie pokazuje wcale. (Ten wykomentowany var_dump pokazuje dane z inputów normalnie.)
Próbowałem przyrównywać wyniki preg_matchów do false ale to nie pomaga. Właściwie cokolwiek bym nie wpisał, to nic się nie dzieje.
Mogę prosić o jakieś wskazówki? Siedzę nad tym dwa dni i dosłownie rzygam już kodem.

  1. $usernCheck = $_POST['usern'];
  2. $passCheck = $_POST['passn'];
  3. // return var_dump($usernCheck.$passCheck);
  4.  
  5. if( preg_match("!@#$%^&*()_+-=,./<>?;':\"{}[]", $usernCheck)
  6. OR preg_match("!@#$%^&*()_+-=,./<>?;':\"{}[]", $passCheck)) {
  7. return "Found special chars.";
  8. } else {
  9. return "Not found special chars.";
  10. }
Comandeer
A masz włączone wyświetlanie błędów? Bo powinieneś zobaczyć mniej więcej to:
Cytat
PHP Warning: preg_match(): No ending delimiter '!' found in [ciach] on line [ciach]
Terrorizer
To jest chyba jakaś grubsza akcja, która na razie mnie przerasta. Projekt dla którego piszę poprawki nie pokazuje wyechowanych wartości ani nic nie zwraca returnem. Tylko var_dumpy się wyświetlają na ekranie.
Próbuję dopisać kilka instrukcji, ale nic nie działa, tak jakby pół funkcjonalności php była nieaktywna. To wygląda tak jakby cudzysłowia ani apostrofy w kodzie nie były przetwarzane przez serwer.
Chociaż to co piszę nie wywala żadnych błędów. Trudno mi to dokładnie opisać.
Chyba muszę się z tym przespać i jeszcze przeanalizować wszystko zanim będę kontynuował ten temat.
viking
http://stackoverflow.com/questions/1397041...cial-characters

Inna sprawa że powinieneś np unikodowymi grupami znaków operować.
nospor
Cytat
To jest chyba jakaś grubsza akcja, która na razie mnie przerasta. Projekt dla którego piszę poprawki nie pokazuje wyechowanych wartości ani nic nie zwraca returnem. Tylko var_dumpy się wyświetlają na ekranie.
Próbuję dopisać kilka instrukcji, ale nic nie działa, tak jakby pół funkcjonalności php była nieaktywna. To wygląda tak jakby cudzysłowia ani apostrofy w kodzie nie były przetwarzane przez serwer.


echo ci nie wyswietla a var_dump tak?
A moze dlatego ze np.
$zm = '';
echp $zm; - nie da nic, bo zmienna nic nie ma
var_dump($zm); - da cos na ekranie bo var_dump nawet jak nic nie ma to wyswietla swoje rzeczy ?

Funkcje ci nie dzialaja i np. preg_match ci nie dziala? Moze dlatego ze nie znasz podstaw wyrazen i nie wiesz, ze poprawne wyrazenie musi sie zaczynac i konczyc tym samym, np '/asd/' - gdzie znak / jest znakiem ktory jest zarowno na poczatku i na koncu i to jest dopiero poporawne wyrazenie a nie tak jak masz ty ze samo 'asd'

Bledy ci sie nie wyswietlaja? Moze poprostu nie wlaczyles ich wyswietlania? A jak nie chcesz wyswietlac to moze sa logowane do pliku? Otwierasz php.ini i tam masz wszystko napisane co gdzie jest.
A moze bledy sa przechwytywane przez system w ktorym piszesz i to on zapisuje do swoich logow?

Apostrofy i cudzyslowia nie sa przetwarzane przez serwer? No prosze cie... Stworz wlasny plik na serwerze test.php i daj w nim
echo 'Widzisz mnie?';
echo "A mnie tez widzisz?";
i go sobie odpal a Twoje watpliwosci na temat apostrofow i cudzyslowi zostana rozwiane

Kolejna sprawa: a czemu bronisz posiadac uzytkownikowi znakow specjalnych w hasle? Czemu bronisz uzytkownikowi posiadania bezpiecznego hasla?
Co do loginu to zamiast szukac znakow specjalnych sprawdzaj czy posiada on znaki dozwolone. zazwyczaj sa to: a-zA-Z0-9_- i po sprawie. I poczytaj wpierw o wyrazeniach regularnych, w necie jest cala masa przykladow jak walidowac login na znaki ktore ci tu podalem. To sa naprawde proste sprawy - naucz sie ich a nie zwalaj winy na serwer.
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.