Le(s) paramètre(s) de isset()
doit être une référence de variable et non une expression (dans votre cas une concaténation) ; mais vous pouvez regrouper plusieurs conditions comme ceci :
if (isset($_POST['search_term'], $_POST['postcode'])) {
}
Cela renverra true
seulement si tous arguments de isset()
sont définis et ne contiennent pas null
.
Notez que isset($var)
et isset($var) == true
ont le même effet, donc ce dernier est quelque peu redondant.
Mettre à jour
La deuxième partie de votre expression utilise empty()
comme ceci :
empty ($_POST['search_term'] . $_POST['postcode']) == false
C'est faux pour les mêmes raisons que ci-dessus. En fait, vous n'avez pas besoin de empty()
ici, car à ce moment-là, vous auriez déjà vérifié si les variables sont définies, vous pouvez donc raccourcir l'expression complète comme suit :
isset($_POST['search_term'], $_POST['postcode']) &&
$_POST['search_term'] &&
$_POST['postcode']
Ou en utilisant une expression équivalente :
!empty($_POST['search_term']) && !empty($_POST['postcode'])
Réflexions finales
Vous devriez envisager d'utiliser filter
fonctions pour gérer les entrées :
$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
Au fait, vous pouvez personnaliser vos filtres pour vérifier différentes parties des valeurs soumises.