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

Validacja poprzez isset oraz empty

Object Storage Arubacloud
0 głosów
1,040 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 (212,670 p.)
isset i empty to nie walidacja. Używaj filter Input.

Podobne pytania

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

92,555 zapytań

141,403 odpowiedzi

319,554 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!

...