O(s) parâmetro(s) para
isset()
deve ser uma referência de variável e não uma expressão (no seu caso uma concatenação); mas você pode agrupar várias condições assim:if (isset($_POST['search_term'], $_POST['postcode'])) {
}
Isso retornará
true
somente se todos argumentos para isset()
estão definidos e não contêm null
. Observe que
isset($var)
e isset($var) == true
têm o mesmo efeito, então o último é um tanto redundante. Atualizar
A segunda parte da sua expressão usa
empty()
assim:empty ($_POST['search_term'] . $_POST['postcode']) == false
Isso está errado pelas mesmas razões acima. Na verdade, você não precisa de
empty()
aqui, porque a essa altura você já teria verificado se as variáveis estão definidas, então você pode usar um atalho para a expressão completa assim:isset($_POST['search_term'], $_POST['postcode']) &&
$_POST['search_term'] &&
$_POST['postcode']
Ou usando uma expressão equivalente:
!empty($_POST['search_term']) && !empty($_POST['postcode'])
Considerações finais
Você deve considerar o uso de
filter
funções para gerenciar as entradas:$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
Aliás, você pode personalizar seus filtros para verificar várias partes dos valores enviados.