Parametrene til isset()
skal være en variabel reference og ikke et udtryk (i dit tilfælde en sammenkædning); men du kan gruppere flere betingelser sammen sådan her:
if (isset($_POST['search_term'], $_POST['postcode'])) {
}
Dette vil returnere true
kun hvis alle argumenter til isset()
er indstillet og indeholder ikke null
.
Bemærk at isset($var)
og isset($var) == true
har samme effekt, så sidstnævnte er noget overflødig.
Opdater
Den anden del af dit udtryk bruger empty()
sådan her:
empty ($_POST['search_term'] . $_POST['postcode']) == false
Dette er forkert af samme årsager som ovenfor. Faktisk behøver du ikke empty()
her, for på det tidspunkt ville du allerede have tjekket, om variablerne er sat, så du kan genveje hele udtrykket sådan:
isset($_POST['search_term'], $_POST['postcode']) &&
$_POST['search_term'] &&
$_POST['postcode']
Eller ved at bruge et tilsvarende udtryk:
!empty($_POST['search_term']) && !empty($_POST['postcode'])
Sidste tanker
Du bør overveje at bruge filter
funktioner til at styre inputs:
$data = filter_input_array(INPUT_POST, array(
'search_term' => array(
'filter' => FILTER_UNSAFE_RAW,
'flags' => FILTER_NULL_ON_FAILURE,
),
'postcode' => array(
'filter' => FILTER_UNSAFE_RAW,
'flags' => FILTER_NULL_ON_FAILURE,
),
));
if ($data === null || in_array(null, $data, true)) {
// some fields are missing or their values didn't pass the filter
die("You did something naughty");
}
// $data['search_term'] and $data['postcode'] contains the fields you want
Btw, du kan tilpasse dine filtre til at tjekke for forskellige dele af de indsendte værdier.