Parametr(y) do isset()
musi być odwołaniem do zmiennej, a nie wyrażeniem (w twoim przypadku konkatenacją); ale możesz zgrupować wiele warunków w ten sposób:
if (isset($_POST['search_term'], $_POST['postcode'])) {
}
To zwróci true
tylko jeśli wszystkie argumenty do isset()
są ustawione i nie zawierają null
.
Zauważ, że isset($var)
i isset($var) == true
mają ten sam efekt, więc ta ostatnia jest nieco zbędna.
Aktualizacja
Druga część wyrażenia używa empty()
tak:
empty ($_POST['search_term'] . $_POST['postcode']) == false
To jest złe z tych samych powodów, co powyżej. W rzeczywistości nie potrzebujesz empty()
tutaj, ponieważ do tego czasu sprawdziłbyś już, czy zmienne są ustawione, więc możesz skrócić pełne wyrażenie w następujący sposób:
isset($_POST['search_term'], $_POST['postcode']) &&
$_POST['search_term'] &&
$_POST['postcode']
Lub używając równoważnego wyrażenia:
!empty($_POST['search_term']) && !empty($_POST['postcode'])
Ostateczne przemyślenia
Powinieneś rozważyć użycie filter
funkcje do zarządzania wejściami:
$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
Przy okazji, możesz dostosować swoje filtry, aby sprawdzić różne części przesłanych wartości.