» »

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

HardFu ::

si probal var_dump($_POST); ?
Ti bo verjetno odgovorilo na vprasanje.
http://codeable.io

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...

msjr ::

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 ;)).
https://dolhar.si/

HardFu ::

shadeX: no potem se anglesko vprasaj: "Is comment set?"
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

 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…



Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

PHP mail - problem

Oddelek: Izdelava spletišč
131425 (1213) carota
»

[PHP]Zajem podatkov iz baze

Oddelek: Programiranje
354038 (3675) cobrica
»

Php register/login problem

Oddelek: Izdelava spletišč
362754 (2165) keworkian
»

php array in path določenega keya:

Oddelek: Izdelava spletišč
151350 (1178) HardFu
»

phpbb user session spremenljivke?

Oddelek: Izdelava spletišč
9864 (782) [MYTiX]

Več podobnih tem