isset()
へのパラメータ 式(この場合は連結)ではなく、変数参照である必要があります。ただし、次のように複数の条件をグループ化できます。
if (isset($_POST['search_term'], $_POST['postcode'])) {
}
これにより、true
が返されます すべての場合のみ isset()
への引数 設定されており、null
は含まれていません 。
isset($var)
に注意してください およびisset($var) == true
同じ効果があるので、後者はやや冗長です。
更新
式の2番目の部分では、empty()
を使用します このように:
empty ($_POST['search_term'] . $_POST['postcode']) == false
これは上記と同じ理由で間違っています。実際、empty()
は必要ありません ここでは、その時点で変数が設定されているかどうかをすでに確認しているので、次のように完全な式をショートカットできます。
isset($_POST['search_term'], $_POST['postcode']) &&
$_POST['search_term'] &&
$_POST['postcode']
または同等の式を使用する:
!empty($_POST['search_term']) && !empty($_POST['postcode'])
最終的な考え
filter
の使用を検討する必要があります 入力を管理する機能:
$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
ところで、フィルターをカスタマイズして、送信された値のさまざまな部分をチェックできます。