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

Validacja poprzez isset oraz empty

VPS Starter Arubacloud
0 głosów
1,133 wizyt
pytanie zadane 25 września 2017 w PHP przez kevin Mądrala (5,010 p.)

Witam!

To są dosyć proste dwa pytania ale chcę się upewnić.

isset() sprawdza czy zmienna została utworzona czyli dla przykładu sprawdza czy istnieje element w tablicy jeżeli nie istnieje zwraca false. Inna funkcja empty() nie czy zmienna jest utworzona sprawdza jedynie zawartość jeżeli przekażę do niej pustą tablicę znaków zwróci wartość true czyli jest to odzwierciedlenie if(strlen($str) == 0) ? Jeżeli stosuję empty() do przesyłanych danych GET/POST to przed empty() muszę upewnić się czy zmienna istnieje isset'em ?

Przesyłając informację o tym czy checkbox został zaznaczony w formularzu najlepiej jest mi dopisać do niego jakąś wartość np. value="1" i dopiero w kodzie php sprawdzać czy istnieje zmienna odpowiadająca za chceckbox'a za pomocą isset i czy wartość tej zmiennej jest równa podanej w value ? Lub empty jeżeli wszystkie value w checkbox'ach będą miały wartość większą od 0.

 

2 odpowiedzi

+1 głos
odpowiedź 25 września 2017 przez Chess Szeryf (76,710 p.)
edycja 25 września 2017 przez Chess

http://php.net/manual/en/function.isset.php

Returns TRUE if var exists and has value other than NULL. FALSE otherwise.

Zwraca true, jeśli zmienna istnieje i ma wartość inną niż null. W pozostałych przypadkach zwraca false.

http://php.net/manual/en/function.empty.php

Returns FALSE if var exists and has a non-empty, non-zero value. Otherwise returns TRUE.

Zwraca false, jeśli zmienna istnieje i ma nie pustą, nie zerową wartość. W pozostałych przypadakch zwraca true.

http://php.net/manual/en/function.strlen.php

The length of the string on success, and 0 if the string is empty.

Zwraca długość string'a, jeśli wszystko się powiodło lub 0 jeśli string jest pusty. 

$str = '';
if(strlen($str) == 0)

Linijka powyżej oznacza: Jeśli długość string'a jest równa zero to wykonaj kod pod spodem. Dla przykładu:

if(strlen('')==0)

czyli jest to odzwierciedlenie if(strlen($str) == 0) ?

Nie, nie jest to odzwierciedlenie dla tej funkcji, można szybko wykonać łatwy test:

<?php 
$str = 0;
if(strlen($str) == 0){
	echo 'true1';
}

if(empty($str)){ 
	echo 'true2';
}

if(isset($str)){
	echo 'true3';
}
?>

Dlaczego tak się dzieje? A no dlatego, że strlen może tylko liczyć długość łańcucha (string), a nie długość int'a. Popodstawiaj sobie za zmienną $str, odpowiednio: null, false,true,0,"",'',(string)0, itp..

 

+1 głos
odpowiedź 25 września 2017 przez Ehlert Ekspert (214,220 p.)
isset i empty to nie walidacja. Używaj filter Input.

Podobne pytania

+1 głos
3 odpowiedzi 307 wizyt
pytanie zadane 14 września 2023 w PHP przez niezalogowany
0 głosów
1 odpowiedź 199 wizyt
pytanie zadane 20 października 2018 w PHP przez Bartłomiej Bolesta Obywatel (1,630 p.)
0 głosów
2 odpowiedzi 870 wizyt
pytanie zadane 2 czerwca 2017 w PHP przez ddoh Początkujący (310 p.)

93,020 zapytań

141,985 odpowiedzi

321,284 komentarzy

62,366 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

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...