尝试验证然后清理$ _GET请求。我只想看看我是否想念任何东西。
这就是我所拥有的...
if (isset($_GET['id'])) {
$id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT);
if (!$id) {
echo 'Error';
exit();
}
$id = filter_input(INPUT_GET, 'id', FILTER_SANITIZE_NUMBER_INT);
$getinfo = mysqli_query($link, sprintf("SELECT column1, column2 FROM table WHERE id = '%s'", mysqli_real_escape_string($link, $id)));
$row = mysqli_fetch_assoc($getinfo);
if (!$row) {
echo 'Error';
exit();
}
//execute rest of code
}
另外,我知道我应该使用PDO,并且计划在某个时候将所有内容都转换为PDO,但是我想知道我现在正在使用mysqli正确地进行此操作。
我想我也有些困惑...如果我先使用FILTER_VALIDATE_INT,事后还需要使用FILTER_SANITIZE_NUMBER_INT吗?我已经在检查它是否纯粹是INT ...
编辑:已编辑以添加FILTER_VALIDATE_INT的错误处理。
确实,您不需要。您要么验证,要么就对它进行消毒。
验证是二进制结果,可以是原始值或false
。
消毒总是可以为您提供结果,但这可能与原始输入无关,也可能无关。它只是保证您得到了您想要的东西,任何输入都将被压缩到您想要的任何模式中(这里是整数)。
一起使用这两种技术并没有什么意义。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句