这是我的代码:
<?PHP $id = $_GET["id"]; if (is_int($id) === FALSE) { header('HTTP/1.1 404 Not Found'); exit('404,page not found'); } ?>
它总是进入if.
is_int检查数据类型是否为整数,但$_GET中的所有内容都是字符串.因此,它总是会返回false.
在紧要关头,您可以转换为整数,然后检查!= 0.
$id = isset($_GET['id']) ? (int) $_GET['id'] : null; if (!$id) { // === 0 || === null header('HTTP/1.1 404 Not Found'); exit('404,page not found'); }
但是更强大的解决方案将涉及某种类型的输入字符串验证/过滤,如PHP的内置filter_input_array().
(10月13日编辑,因为它仍然收到了赞成票,而且措辞有些令人困惑.)