(Các) tham số cho isset()
phải là một tham chiếu biến và không phải là một biểu thức (trong trường hợp của bạn là một phép nối); nhưng bạn có thể nhóm nhiều điều kiện lại với nhau như sau:
if (isset($_POST['search_term'], $_POST['postcode'])) {
}
Điều này sẽ trả về true
chỉ khi tất cả đối số cho isset()
được đặt và không chứa null
.
Lưu ý rằng isset($var)
và isset($var) == true
có cùng tác dụng, vì vậy cái sau hơi thừa.
Cập nhật
Phần thứ hai của biểu thức của bạn sử dụng empty()
như thế này:
empty ($_POST['search_term'] . $_POST['postcode']) == false
Điều này là sai vì những lý do tương tự như trên. Trên thực tế, bạn không cần empty()
tại đây, vì lúc đó bạn đã kiểm tra xem các biến đã được đặt chưa, vì vậy bạn có thể viết tắt biểu thức hoàn chỉnh như sau:
isset($_POST['search_term'], $_POST['postcode']) &&
$_POST['search_term'] &&
$_POST['postcode']
Hoặc sử dụng một biểu thức tương đương:
!empty($_POST['search_term']) && !empty($_POST['postcode'])
Suy nghĩ cuối cùng
Bạn nên cân nhắc sử dụng filter
chức năng quản lý đầu vào:
$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
Btw, bạn có thể tùy chỉnh bộ lọc của mình để kiểm tra các phần khác nhau của các giá trị đã gửi.