De parameter(s) naar isset()
moet een variabele referentie zijn en geen uitdrukking (in uw geval een aaneenschakeling); maar u kunt meerdere voorwaarden als volgt groeperen:
if (isset($_POST['search_term'], $_POST['postcode'])) {
}
Dit retourneert true
alleen als alle argumenten voor isset()
zijn ingesteld en bevatten geen null
.
Merk op dat isset($var)
en isset($var) == true
hebben hetzelfde effect, dus de laatste is enigszins overbodig.
Bijwerken
Het tweede deel van je expressie gebruikt empty()
zoals dit:
empty ($_POST['search_term'] . $_POST['postcode']) == false
Dit is om dezelfde redenen als hierboven onjuist. In feite heb je empty()
. niet nodig hier, omdat je tegen die tijd al zou hebben gecontroleerd of de variabelen zijn ingesteld, dus je kunt de volledige uitdrukking als volgt verkorten:
isset($_POST['search_term'], $_POST['postcode']) &&
$_POST['search_term'] &&
$_POST['postcode']
Of gebruik een equivalente uitdrukking:
!empty($_POST['search_term']) && !empty($_POST['postcode'])
Laatste gedachten
Overweeg het gebruik van filter
functies om de ingangen te beheren:
$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
Trouwens, je kunt je filters aanpassen om te controleren op verschillende delen van de ingediende waarden.