Parametr(y) isset()
musí to být odkaz na proměnnou a ne výraz (ve vašem případě zřetězení); ale můžete seskupit více podmínek dohromady takto:
if (isset($_POST['search_term'], $_POST['postcode'])) {
}
To vrátí true
pouze pokud všechny argumenty pro isset()
jsou nastaveny a neobsahují null
.
Všimněte si, že isset($var)
a isset($var) == true
mají stejný účinek, takže to druhé je poněkud nadbytečné.
Aktualizovat
Druhá část vašeho výrazu používá empty()
takhle:
empty ($_POST['search_term'] . $_POST['postcode']) == false
To je špatně ze stejných důvodů jako výše. Ve skutečnosti nepotřebujete empty()
zde, protože v té době byste již zkontrolovali, zda jsou proměnné nastaveny, takže můžete celý výraz zkrátit takto:
isset($_POST['search_term'], $_POST['postcode']) &&
$_POST['search_term'] &&
$_POST['postcode']
Nebo použijte ekvivalentní výraz:
!empty($_POST['search_term']) && !empty($_POST['postcode'])
Poslední myšlenky
Měli byste zvážit použití filter
funkce pro správu vstupů:
$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, můžete si přizpůsobit své filtry tak, aby kontrolovaly různé části odeslaných hodnot.