我正在尝试检查是否提供了参数并通过了条件,但似乎很冗长。这就是我所拥有的:
# Place your local configuration in /etc/mosquitto/conf.d/
#
# A full description of the configuration file is at
# /usr/share/doc/mosquitto/examples/mosquitto.conf.example
pid_file /var/run/mosquitto.pid
persistence true
persistence_location /var/lib/mosquitto/
log_dest file /var/log/mosquitto/mosquitto.log
include_dir /etc/mosquitto/conf.d
#password_file /etc/mosquitto/passwd
#allow_anonymous false
listener 1884
protocol websockets
我认为这是安全的,但是在保持安全的前提下,有没有更简洁的方法来实现这一目标?
答案 0 :(得分:1)
您可以使用preg_match来查看第一个字符是否为[1-9],然后是任意数字。
这将不允许零值或为空或字符串。
您可以添加一个三元组,但是比我无法触及的短。
if(preg_match("/^[1-9]\d*$/", (isset($str) ? $str : 0))){
// Something
}
答案 1 :(得分:0)
使用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;
}
答案 2 :(得分:-1)
您可以使用
if (isset($request['limit']) and intval($request['limit']) > 0) {
$post_params['posts_per_page'] = (int)$request['limit'];
}
答案 3 :(得分:-2)
不确定您是否认为这是一个单手演奏...
$correct = @(preg_match('/^[1-9]\d*$/', $request['limit']));
“ @”将禁止此句子中的任何警告,但是您可以得到的唯一警告是未定义变量,因此该变量是受控的。