Forum » Izdelava spletišč » php - isset() vprašanje
php - isset() vprašanje
shadeX ::
pozdrav.
je ena stvar ki jo moram razčistit in sicer:
$a = 1;
$b = NULL;
var_dump(isset($a)); // VRNE TRUE
var_dump(isset( $b)); // VRNE FALSE
Vse lepo in prav. $a ima vrednost 1. $b nima vrednosti ker ji je bila dodeljena konstanta NULL;
Preprost html obrazec (tukaj je nepopolen)
Ime: input type="text" name="name"
Komentar: textarea name="comment">
in nato mam external file z imenom insert.php
Problem:
$formName = $_POST['name'];
$formComment = $_POST['comment'];
var_dump(isset($formName)); // VRNE TRUE V VSAKMU PRIMERU. Ali je obrazec prazen ali izpolnjen
var_dump(isset($formComment)); // VRNE TRUE V VSAKMU PRIMERU. Ali je obrazec prazen ali izpolnjen.
Zakaj? Pričakoval bi FALSE če npr, $_POST['name']; ni izpolnjen. Saj dokler ni obrazec izpolnjen je vrednost spremenljivk NULL. Zakaj torej vrne vedno TRUE?
p.s Če uporabim empty() mi deluje kot pričakovano. Na prazen obrazec mi vrne true, na polnega false.
Mi zna kdo to razložit prosim? Hvala
je ena stvar ki jo moram razčistit in sicer:
$a = 1;
$b = NULL;
var_dump(isset($a)); // VRNE TRUE
var_dump(isset( $b)); // VRNE FALSE
Vse lepo in prav. $a ima vrednost 1. $b nima vrednosti ker ji je bila dodeljena konstanta NULL;
Preprost html obrazec (tukaj je nepopolen)
Ime: input type="text" name="name"
Komentar: textarea name="comment">
in nato mam external file z imenom insert.php
Problem:
$formName = $_POST['name'];
$formComment = $_POST['comment'];
var_dump(isset($formName)); // VRNE TRUE V VSAKMU PRIMERU. Ali je obrazec prazen ali izpolnjen
var_dump(isset($formComment)); // VRNE TRUE V VSAKMU PRIMERU. Ali je obrazec prazen ali izpolnjen.
Zakaj? Pričakoval bi FALSE če npr, $_POST['name']; ni izpolnjen. Saj dokler ni obrazec izpolnjen je vrednost spremenljivk NULL. Zakaj torej vrne vedno TRUE?
p.s Če uporabim empty() mi deluje kot pričakovano. Na prazen obrazec mi vrne true, na polnega false.
Mi zna kdo to razložit prosim? Hvala
shadeX ::
sem. in če v obrazec ne vpišem nič mi vrne:
array
'name' => string '' (length=0)
'comment' => string '' (length=0)
torej je to prazen array - NULL..
še vedno ne vem zakaj mi isset vrne true ob praznem obrazcu...
array
'name' => string '' (length=0)
'comment' => string '' (length=0)
torej je to prazen array - NULL..
še vedno ne vem zakaj mi isset vrne true ob praznem obrazcu...
Ziga Dolhar ::
... ker isset ne preverja, ali je vrednost "polna" ali "prazna", ampak ali je nastavljena ali ne.
Moraš ločiti med isset() in is_null(). Izpolnjenosti obrazca zato ne preverjaš le z isset(), ampak tudi strlen(trim($input)). Pa moraš biti pozoren na morebitne razlike, če je uporabljena metoda GET ali POST.
Sicer pa se bojim, da nimaš vklopljenega prikaza vseh obvestil - error_reporting = E_ALL [vključno z E_NOTICE]. Izpis var_dump($formName) bi znal biti zanimiv ;)).
Moraš ločiti med isset() in is_null(). Izpolnjenosti obrazca zato ne preverjaš le z isset(), ampak tudi strlen(trim($input)). Pa moraš biti pozoren na morebitne razlike, če je uporabljena metoda GET ali POST.
Sicer pa se bojim, da nimaš vklopljenega prikaza vseh obvestil - error_reporting = E_ALL [vključno z E_NOTICE]. Izpis var_dump($formName) bi znal biti zanimiv ;)).
https://dolhar.si/
HardFu ::
shadeX: no potem se anglesko vprasaj: "Is comment set?"
Glede na output je odgovor da, samo vrednost commenta je prazna
Glede na output je odgovor da, samo vrednost commenta je prazna
http://codeable.io
KoMar- ::
var_dump(isset($formName)); var_dump(isset($formComment));
-->
var_dump(isset($_POST['name'])); var_dump(isset($_POST['comment']));
radiokills ::
$_POST['name'] ima vrednost in sicer je to string ""
Tukaj lahko uporabis dolharjevo rešitev, lahko pa tudi preverjaš dolžino stringa
Je pa isset uporaben pri checkboxih, kjer so v requestu dejansko samo obkljukani checkboxi
edti: čisto preveč nahitro sem prebral dolharjev odgovor in ugotovil da predlagam isto rešitev sori
Tukaj lahko uporabis dolharjevo rešitev, lahko pa tudi preverjaš dolžino stringa
if(strlen($_POST['name']) > 0){ do_smth}else{do_smth_else}
Je pa isset uporaben pri checkboxih, kjer so v requestu dejansko samo obkljukani checkboxi
edti: čisto preveč nahitro sem prebral dolharjev odgovor in ugotovil da predlagam isto rešitev sori
Zgodovina sprememb…
- spremenilo: radiokills ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | PHP mail - problemOddelek: Izdelava spletišč | 1425 (1213) | carota |
» | [PHP]Zajem podatkov iz bazeOddelek: Programiranje | 4038 (3675) | cobrica |
» | Php register/login problemOddelek: Izdelava spletišč | 2754 (2165) | keworkian |
» | php array in path določenega keya:Oddelek: Izdelava spletišč | 1350 (1178) | HardFu |
» | phpbb user session spremenljivke?Oddelek: Izdelava spletišč | 864 (782) | [MYTiX] |