• 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

Object Storage Arubacloud
0 głosów
1,208 wizyt
pytanie zadane 12 stycznia 2018 w PHP przez kevin Mądrala (5,010 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 2018 przez efiku Szeryf (75,160 p.)
edycja 12 stycznia 2018 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 2018 przez kevin Mądrala (5,010 p.)
Na moim etapie nauki ciężko będzie wymyślić praktyczne zastosowanie.

1 odpowiedź

+2 głosów
odpowiedź 12 stycznia 2018 przez Arkadiusz Waluk Ekspert (287,950 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 16 stycznia 2018 przez Arkadiusz Waluk Ekspert (287,950 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 16 stycznia 2018 przez kevin Mądrala (5,010 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 17 stycznia 2018 przez Arkadiusz Waluk Ekspert (287,950 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 18 stycznia 2018 przez kevin Mądrala (5,010 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 18 stycznia 2018 przez Arkadiusz Waluk Ekspert (287,950 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
0 odpowiedzi 265 wizyt
pytanie zadane 26 października 2019 w PHP przez JSJerry Początkujący (260 p.)
0 głosów
1 odpowiedź 151 wizyt
pytanie zadane 30 stycznia 2019 w PHP przez zerakot Obywatel (1,870 p.)
0 głosów
1 odpowiedź 196 wizyt
pytanie zadane 18 czerwca 2018 w PHP przez Piotr Szramowski Użytkownik (860 p.)

92,555 zapytań

141,404 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...