Los parámetros para isset()
debe ser una referencia variable y no una expresión (en su caso una concatenación); pero puede agrupar varias condiciones juntas de esta manera:
if (isset($_POST['search_term'], $_POST['postcode'])) {
}
Esto devolverá true
solo si todos argumentos para isset()
están configurados y no contienen null
.
Tenga en cuenta que isset($var)
y isset($var) == true
tienen el mismo efecto, por lo que este último es algo redundante.
Actualizar
La segunda parte de su expresión usa empty()
así:
empty ($_POST['search_term'] . $_POST['postcode']) == false
Esto es incorrecto por las mismas razones que las anteriores. De hecho, no necesita empty()
aquí, porque en ese momento ya habría comprobado si las variables están configuradas, por lo que puede acortar la expresión completa de la siguiente manera:
isset($_POST['search_term'], $_POST['postcode']) &&
$_POST['search_term'] &&
$_POST['postcode']
O usando una expresión equivalente:
!empty($_POST['search_term']) && !empty($_POST['postcode'])
Reflexiones finales
Debería considerar usar filter
funciones para gestionar las 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
Por cierto, puede personalizar sus filtros para verificar varias partes de los valores enviados.