Parametrarna till isset()
måste vara en variabelreferens och inte ett uttryck (i ditt fall en sammanlänkning); men du kan gruppera flera villkor så här:
if (isset($_POST['search_term'], $_POST['postcode'])) {
}
Detta returnerar true
bara om alla argument till isset()
är inställda och innehåller inte null
.
Observera att isset($var)
och isset($var) == true
har samma effekt, så det senare är något överflödigt.
Uppdatera
Den andra delen av ditt uttryck använder empty()
så här:
empty ($_POST['search_term'] . $_POST['postcode']) == false
Detta är fel av samma skäl som ovan. Faktum är att du inte behöver empty()
här, för vid den tiden skulle du redan ha kontrollerat om variablerna är inställda, så du kan genväga hela uttrycket så här:
isset($_POST['search_term'], $_POST['postcode']) &&
$_POST['search_term'] &&
$_POST['postcode']
Eller med ett motsvarande uttryck:
!empty($_POST['search_term']) && !empty($_POST['postcode'])
Sluta tankar
Du bör överväga att använda filter
funktioner för att hantera ingångarna:
$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 anpassa dina filter för att leta efter olika delar av de inskickade värdena.