• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

filter_input a pobieranie zmiennej z tablicy $_POST

Ultraszybki serwer VPS NVMe BIZNES
0 głosów
97 wizyt
pytanie zadane 12 stycznia w PHP, Symfony, Zend przez kevin Obywatel (1,660 p.)

Witam!

Po co się używa: $in_adres = filter_input(INPUT_POST, 'adres');

Skoro można pobrać zmienną $in_adres = $_POST['adres'] ?

Co wprowadza mi filter_input ?

komentarz 12 stycznia przez efiku Maniak (73,480 p.)
edycja 12 stycznia przez efiku
Dokumentacja Twoim przyjacielem, spróbuj zrozumieć i pomyśleć jak to wykorzystać.

http://php.net/manual/en/function.filter-input.php
komentarz 13 stycznia przez kevin Obywatel (1,660 p.)
Na moim etapie nauki ciężko będzie wymyślić praktyczne zastosowanie.

1 odpowiedź

+2 głosów
odpowiedź 12 stycznia przez Arkadiusz Waluk Mędrzec (195,900 p.)
Gdy ten element nie będzie istniał w tablicy $_POST (nie zostanie przesłany) to odwołanie przez $_POST[] spowoduje ostrzeżenie. filter_input() automatycznie sprawdza czy dany element jest - jeśli tak to odczytuje i zwraca jego wartość, jeśli nie to zwraca nulla.

Dodatkowo można również dołożyć 3 argument z jakimś filtrem, dzięki którym możesz np. od razu wykonać sanityzację czy walidację. Cała lista filtrów: http://php.net/manual/en/filter.filters.php
komentarz 5 dni temu przez Arkadiusz Waluk Mędrzec (195,900 p.)
No dokładnie tak, trzeba by przeiterować się po tej tablicy i np. przez explode wydzielić sobie reguły i odpowiednio walidować. Jeśli ma być to tak mała walidacja to również jestem zdania, że nie ma tu sensu nie wiadomo jak rozbudowany mechanizm. Czym powinna być tego typu klasa to pewnie zależy od szczegółów implementacji, akurat tutaj nie widzę konieczności użycia singletona. Pewnie nic się nie stanie, ale gdybyś stworzył nową klasę też by się nic nie stało moim zdaniem. A z singletonów bym po prostu nie nadużywał - stosował, gdy potrzebne.
komentarz 5 dni temu przez kevin Obywatel (1,660 p.)

Racja z tym singletonem.

Wracając do filter_input, są funkcje pochodne typu filter_var które bez problemu mogę wykorzystać do sprawdzenia poprawności adresu email. Tylko czy dobrze rozumiem ? Najpierw powinienem z takiego adresu usunąć wszystkie niedozwolone znaki za pomocą filter_var($email, FILTER_SANITIZE_EMAIL); później powinienem sprawdzić czy to co zwróci ta funkcja jest adresem email za pomocą if(filter_var($rezult_email, FILTER_VALIDATE_EMAIL) i porównać to z tym adresem z którego usuwałem niedozwolone znaki ponieważ w przesłanych danych jako adres email mogą znajdować się niedozwolone znaki pierwszy filtr zwróci string z dozwolonymi znakami jakie mogą być dla adresu email a niedozwolone znaki zostaną usunięte. Kolejny filtr sprawdza czy to co zostaje przekazane po usunięciu znaków jest adresem email jeżeli tak to zwróci true a ostatni if sprawdza czy z przesłanych danych nie zostały usunięte znaki tzn czy adres który trafił metodą POST/GET jest prawidłowy.

 

$result_email = filter_var($email, FILTER_SANITIZE_EMAIL); // Usuwa niedozwolone dla email znaki
		
if ( (filter_var($result_email, FILTER_VALIDATE_EMAIL) == false ) || ($email != $result_email) )
{
	return 'e_validate_incorrect_email';
}

 

komentarz 4 dni temu przez Arkadiusz Waluk Mędrzec (195,900 p.)

Nie rozumiem po co tak kombinować. Dlaczego nie możesz zrobić po prostu tak: https://3v4l.org/3ZSOX? Po co usuwać niedozwolone dla emaila znaki? Jeśli ktoś tam takowe wpisze to jak dla mnie nie powinno to po prostu przejść walidacji, a nie pomagać (że jednak coś się samo usunie i jakoś przejdzie). 

komentarz 3 dni temu przez kevin Obywatel (1,660 p.)

Pan Misrosław Zelent w jednym odcinku prezentował takie rozwiązanie i ja sam do końca nie rozumiałem dlaczego tak przeprowadza walidację danych. Skoro znajdują się jakieś niedozwolone znaki to jasne jest to że nie przejdzie pozytywnie testu z filter_var.

komentarz 3 dni temu przez Arkadiusz Waluk Mędrzec (195,900 p.)
No właśnie. I skoro po prostu nie przejdzie walidacji to jak dla mnie nie ma po co dodatkowo się zabezpieczać i modyfikować tego, co wprowadził użytkownik.

Podobne pytania

0 głosów
1 odpowiedź 98 wizyt
pytanie zadane 26 lutego 2017 w PHP, Symfony, Zend przez Ozzy Nowicjusz (140 p.)
0 głosów
1 odpowiedź 139 wizyt
pytanie zadane 14 lutego 2016 w PHP, Symfony, Zend przez gab123 Mądrala (5,240 p.)
0 głosów
3 odpowiedzi 176 wizyt
pytanie zadane 16 września 2015 w PHP, Symfony, Zend przez COLD IC3 Nałogowiec (36,860 p.)
Porady nie od parady
Zadając pytanie postaraj się o szczegółowe opisanie problemu oraz udostępnienie wszystkich istotnych informacji (kody źródłowe, zrzuty ekranu itp.).
Ciekawy innych porad? Odwiedź tę stronę!

44,251 zapytań

84,047 odpowiedzi

167,336 komentarzy

21,161 pasjonatów

Przeglądających: 176
Pasjonatów: 8 Gości: 168

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...