• 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

0 głosów
118 wizyt
pytanie zadane 12 stycznia w PHP, Symfony, Zend przez kevin Bywalec (2,780 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,720 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 Bywalec (2,780 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 Ekspert (213,200 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 przez Arkadiusz Waluk Ekspert (213,200 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 przez kevin Bywalec (2,780 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 przez Arkadiusz Waluk Ekspert (213,200 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 przez kevin Bywalec (2,780 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 przez Arkadiusz Waluk Ekspert (213,200 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ź 110 wizyt
pytanie zadane 26 lutego 2017 w PHP, Symfony, Zend przez Ozzy Nowicjusz (140 p.)
0 głosów
1 odpowiedź 141 wizyt
pytanie zadane 14 lutego 2016 w PHP, Symfony, Zend przez gab123 Mądrala (5,240 p.)
0 głosów
3 odpowiedzi 177 wizyt
pytanie zadane 16 września 2015 w PHP, Symfony, Zend przez COLD IC3 Nałogowiec (36,880 p.)
Oferty pracy dla początkujących programistów na portalu No Fluff Jobs
Porady nie od parady
Zadając pytanie postaraj się o odpowiedni tytuł, kategorię oraz tagi.Tagi

49,783 zapytań

91,751 odpowiedzi

185,346 komentarzy

24,230 pasjonatów

Przeglądających: 261
Pasjonatów: 18 Gości: 243

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.

...