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

Weryfikacja formularza

Object Storage Arubacloud
+1 głos
363 wizyt
pytanie zadane 5 kwietnia 2016 w PHP przez GaCeL Dyskutant (7,500 p.)
Cześć, jakim sposobem najlepiej sprawdzić czy zmienne z inputów $_POST['email'] oraz $_POST['position'] istnieją, jeżeli nie wpisał ktoś np. $_POST['email'] to ma zrobić jakąś akcje, jak skonstruować na to warunek? isset a może empty, czy jeszcze coś innego?

4 odpowiedzi

+1 głos
odpowiedź 6 kwietnia 2016 przez event15 Szeryf (93,790 p.)
wybrane 6 kwietnia 2016 przez GaCeL
 
Najlepsza

Oczywiście jeśli chcesz sprawdzić, czy zmienna jest pusta to żadne empty tylko eleganckie array_key_exists().

Dlaczego? empty() świruje przy niektórych danych - ma problem z nullem.

if(array_key_exists('email', $_POST)) {
    // magia
}

 

komentarz 6 kwietnia 2016 przez event15 Szeryf (93,790 p.)
W dodatku możesz za pomocą array_map wykonać tę funkcję dla wszystkich elementów które chcesz znaleźć. Będzie wtedy mniej ifowania. Jednakże to zależy tylko od potrzeby
komentarz 6 kwietnia 2016 przez Comandeer Guru (601,590 p.)

empty() świruje przy niektórych danych - ma problem z nullem.

Ciekawi mnie jak można przesłać nulla formularzem… ;)

komentarz 6 kwietnia 2016 przez event15 Szeryf (93,790 p.)

;;;

komentarz 6 kwietnia 2016 przez Comandeer Guru (601,590 p.)
I jesteś pewien, że zostanie przesłany faktycznie null a nie tekst null?
komentarz 6 kwietnia 2016 przez event15 Szeryf (93,790 p.)
Stąd w drugim polu jest %00 jeszcze można spróbować z \0 bodajże.
komentarz 6 kwietnia 2016 przez Comandeer Guru (601,590 p.)

Ok… Tylko dalej nie rozumiem, co jest lepszego w array_key_exists skoro dla NULL character (to raczej nie to samo, co null) jedno i drugie zwróci taki sam wynik (array_key_exists, że klucz istnieje, a empty, że nie jest pusty…)

komentarz 6 kwietnia 2016 przez GaCeL Dyskutant (7,500 p.)
edycja 6 kwietnia 2016 przez GaCeL

Jakie muszą być argumenty dla

array_key_exists()

Jak sprawdzić czy zostało coś wpisane w input post 'email'?
Takie coś?

array_key_exists('email', $_POST)

A czy da się w jednej funkcji sprawdzić post 'email' i post 'position' ?

 

komentarz 6 kwietnia 2016 przez event15 Szeryf (93,790 p.)

W przypadku danych formularza może nie jest to niezbędne, jednak gdy zacznie się operować na tablicach innych niż superglobalne to używanie empty, czy isset powoduje pewne problemy w przypadku błędnej ich implementacji.

Zwrciłem uwagę na nulla, ale empty() również zwróci true dla przypadków:

  • $x = "";
  • $x = null
  • $x = array()
  • $x = 0
  • $x = "0"

Dwa ostatnie przypadki mogłyby mieć znaczenie gdyby chociażby zmienna get obsługiwała integery.

komentarz 6 kwietnia 2016 przez Comandeer Guru (601,590 p.)

Jak sprawdzić czy zostało coś wpisane w input post 'email'?

Tak tego nie sprawdzisz. Tutaj już faktycznie prędzej empty pomoże.

komentarz 6 kwietnia 2016 przez GaCeL Dyskutant (7,500 p.)

Problem rozwiązany, dzięki za pomoc event15 i innym użytkownikom.

0 głosów
odpowiedź 5 kwietnia 2016 przez Benek Szeryf (91,050 p.)

Funkcja isset() będzie zwracać zawsze true. Ja ostatnio stosowałem empty() zgodnie z podpowiedzią ze StackOverFlow: http://stackoverflow.com/questions/13045279/if-isset-post

0 głosów
odpowiedź 6 kwietnia 2016 przez Boshi VIP (100,240 p.)
Jeżeli sprawdzasz czy dane zostały wypełnione to  empty, isset zawsze ci zwróci true, nawet dla pustych danych.
komentarz 6 kwietnia 2016 przez event15 Szeryf (93,790 p.)
edycja 6 kwietnia 2016 przez event15
<?php
$search_array = array('first' => null, 'second' => 4);

// returns false
isset($search_array['first']);

// returns true
array_key_exists('first', $search_array);
?>

 

komentarz 6 kwietnia 2016 przez Boshi VIP (100,240 p.)
A w sumie to się zastanawiałem przed napisaniem a nie chciało mi się sprawdzać czy null traktowane jest jako  pusta wartość.
0 głosów
odpowiedź 6 kwietnia 2016 przez Fenix Nałogowiec (26,750 p.)
Ogólnie to isset sprawdza czy zmienna jest ustawiona i nie jest NULL, empty czy znajduje się coś w zmiennej zwróci true dla pustego stringa, false, pustej tablicy, null, 0 jako string, 0 jako int, 0.0 jako float oraz jeśli zmienna jest nieustawiona. Empty zwaraca false dla pustego miejsca " "(spacji)

Jest jeszcze funkcja odwrotna do isset(), is_null() (zwraca true w wypadku gdy zmienna ma wartość null lub gdy jej wartość nie jest ustawiona w innym wypadku false ) którą co ciekawe można użyć tylko na już zadeklarowanej zmiennej.
1
komentarz 6 kwietnia 2016 przez event15 Szeryf (93,790 p.)
<?php
$search_array = array('first' => null, 'second' => 4);

// returns false
isset($search_array['first']);

// returns true
array_key_exists('first', $search_array);
?>


A to ciekawe ;)

komentarz 6 kwietnia 2016 przez Fenix Nałogowiec (26,750 p.)
Co w tym ciekawego ? :P
komentarz 6 kwietnia 2016 przez event15 Szeryf (93,790 p.)

Ogólnie to isset sprawdza czy zmienna jest ustawiona i nie jest NULL

Z tego wynika: isset zwróci true gdy zmienna jest "ustawiona" i nie jest nullem. Bywa, że zmienna jest "ustawiana" na nulla. 

Po drugie sprawdzanie w przypadku danych superglobalnych metodą is_null() mija się z celem. Tak samo jako korzystanie jednocześnie z isset() i empty(). Poza tym strasznie nadziabdziałeś z tym empty że jak ktoś zacznie czytać to zastanowi się o co ci chodziło

komentarz 7 kwietnia 2016 przez Fenix Nałogowiec (26,750 p.)
Masz rację źle to napisałem, dosyć niezrozumiale chwilowo nie mam za bardzo czasu. Ale gdy znajdę, edytuję post. W razie w jakby ktoś kiedyś go odnalazł.

Podobne pytania

0 głosów
1 odpowiedź 119 wizyt
0 głosów
1 odpowiedź 109 wizyt
pytanie zadane 1 czerwca 2019 w JavaScript przez fyrr Użytkownik (910 p.)
0 głosów
0 odpowiedzi 112 wizyt
pytanie zadane 27 lipca 2018 w HTML i CSS przez Kondzio Mądrala (5,230 p.)

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,965 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!

...