我正在尝试检查是否提供了参数并通过了条件,但似乎很冗长。这就是我所拥有的:if (isset($request['limit']) && is_numeric($request['limit']) && (int)$request['limit'] > 0) { $post_params['posts_per_page'] = (int)$request['limit'];}我认为这是安全的,但是有没有更简洁的方法来实现这一目标,同时仍然保持安全?
3 回答
慕沐林林
TA贡献2016条经验 获得超9个赞
使用filter_input或filter_var
if (isset($request['limit']) {
$var = filter_var($request['limit'], FILTER_VALIDATE_INT, ['min_range' => 0]);
if ($var) {
$post_params['posts_per_page'] = $var;
}
}
但理想情况下,您将在生成 $request 数组时执行此操作。
$request = [
'limit' => filter_input(INPUT_GET, 'limit', FILTER_VALIDATE_INT, ['min_range' => 0])
];
if ($request['limit']) {
$post_params['posts_per_page'] = $var;
}
凤凰求蛊
TA贡献1825条经验 获得超4个赞
不确定你是否认为这是一个速记......
$correct = @(preg_match('/^[1-9]\d*$/', $request['limit']));
"@" 会抑制这句话中的任何警告,但你能得到的唯一警告是变量没有定义,所以它是受控的。
- 3 回答
- 0 关注
- 139 浏览
添加回答
举报
0/150
提交
取消