I parametri per isset()
deve essere un riferimento variabile e non un'espressione (nel tuo caso una concatenazione); ma puoi raggruppare più condizioni insieme in questo modo:
if (isset($_POST['search_term'], $_POST['postcode'])) {
}
Questo restituirà true
solo se tutti argomenti per isset()
sono impostati e non contengono null
.
Nota che isset($var)
e isset($var) == true
hanno lo stesso effetto, quindi quest'ultimo è alquanto ridondante.
Aggiorna
La seconda parte della tua espressione usa empty()
così:
empty ($_POST['search_term'] . $_POST['postcode']) == false
Questo è sbagliato per le stesse ragioni di cui sopra. In effetti, non hai bisogno di empty()
qui, perché a quel punto avresti già verificato se le variabili sono impostate, quindi puoi abbreviare l'espressione completa in questo modo:
isset($_POST['search_term'], $_POST['postcode']) &&
$_POST['search_term'] &&
$_POST['postcode']
O usando un'espressione equivalente:
!empty($_POST['search_term']) && !empty($_POST['postcode'])
Pensieri finali
Dovresti considerare l'utilizzo di filter
funzioni per gestire gli ingressi:
$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
A proposito, puoi personalizzare i tuoi filtri per verificare la presenza di varie parti dei valori inviati.