У меня есть несколько флажков, которые можно проверить. Они похожи
<input type="checkbox" name="order[123]" value="1">
Теперь я проверяю данные формы и фильтрую идентификаторы в массиве заказов таким образом, прежде чем искать их в базе данных.
$orderids = preg_grep('/^\d+$/', array_keys($_POST['order']));
Есть ли более эффективный способ сделать это?
Используя регулярные выражения, вы гарантируете, что вредоносные строки не используются, но не проверяете жизнеспособность в базе данных. (например. order[999999999999999999999999]
будет проходить регулярное выражение, но не будет полезным в БД.)
Самая правильная проверка — запускать их для идентификаторов баз данных, используя array_intersect
,
$valid_ids=array_intersect(array_keys($_POST['order']),$db_orderids_array)
Других решений пока нет …