Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Walidacja znaków specjalnych przez preg_match
Terrorizer
post
Post #1





Grupa: Zarejestrowani
Postów: 345
Pomógł: 3
Dołączył: 31.03.2012

Ostrzeżenie: (0%)
-----


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. }


Ten post edytował Terrorizer 5.08.2016, 21:46:08
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Comandeer
post
Post #2





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

Ostrzeżenie: (0%)
-----


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]
Go to the top of the page
+Quote Post
Terrorizer
post
Post #3





Grupa: Zarejestrowani
Postów: 345
Pomógł: 3
Dołączył: 31.03.2012

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Terrorizer 6.08.2016, 01:44:01
Go to the top of the page
+Quote Post
viking
post
Post #4





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


http://stackoverflow.com/questions/1397041...cial-characters

Inna sprawa że powinieneś np unikodowymi grupami znaków operować.
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 12:48