Parameter ke isset()
harus berupa referensi variabel dan bukan ekspresi (dalam kasus Anda merupakan rangkaian); tetapi Anda dapat mengelompokkan beberapa kondisi bersama-sama seperti ini:
if (isset($_POST['search_term'], $_POST['postcode'])) {
}
Ini akan mengembalikan true
hanya jika semua argumen ke isset()
diatur dan tidak mengandung null
.
Perhatikan bahwa isset($var)
dan isset($var) == true
memiliki efek yang sama, jadi yang terakhir agak berlebihan.
Perbarui
Bagian kedua dari ekspresi Anda menggunakan empty()
seperti ini:
empty ($_POST['search_term'] . $_POST['postcode']) == false
Ini salah karena alasan yang sama seperti di atas. Sebenarnya, Anda tidak perlu empty()
di sini, karena pada saat itu Anda pasti sudah memeriksa apakah variabel sudah disetel, jadi Anda bisa pintas ekspresi lengkapnya seperti ini:
isset($_POST['search_term'], $_POST['postcode']) &&
$_POST['search_term'] &&
$_POST['postcode']
Atau menggunakan ekspresi yang setara:
!empty($_POST['search_term']) && !empty($_POST['postcode'])
Pemikiran terakhir
Anda harus mempertimbangkan untuk menggunakan filter
berfungsi untuk mengelola input:
$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, Anda dapat menyesuaikan filter untuk memeriksa berbagai bagian dari nilai yang dikirimkan.