PHP is_int未按预期执行

kir*_*rby 7 php isinteger

我有一个页面(index.php)GET从URL 获取一个变量并检查它是否安全.该GET变量应该只是一个整数.我使用以下代码来检查这一点,但在所有情况下,整数与否,我得到index.php页面.标题永远不会出现.在此代码之后,页面的其余部分将以html标记开头显示.

PHP:

<?php ob_start(); session_start();
$q=trim($_GET['q']);
if (!is_numeric($q)){
header("HTTP/1.0 404 Not Found");
}
?>
Run Code Online (Sandbox Code Playgroud)

Ali*_*guy 22

如果它在查询字符串中传递,它将不是整数.

尝试 is_numeric()

  • 同样`ctype_digit()`表示只包含数字的字符串. (3认同)

Joe*_*oep 5

有一种更好的方法可以做到这一点,即转换为int:

$q = (int) $_GET['q'];
Run Code Online (Sandbox Code Playgroud)

is_int 行为符合预期.因为GET参数总是字符串.尝试var_dumping它们.

  • 想想看,AlienWebguy 的答案可能更好,因为您可以过滤掉任何“奇怪”的值...... (2认同)