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.