只接受数字作为GET变量

时间:2011-12-18 13:15:09

标签: php get

您好,

我想只允许$_GET方法中的数字。我使用这是分页来保护

$page = (isset($_GET['page']) && is_numeric($_GET['page']) ? (int) $_GET['page'] : 1);

如果我输入特殊字符或alpha,则会返回错误

这不应该是可能的:

index.php?page=AAindex.php?page='!@#$%^&*()

只有这个: index.php?page=12 ...

任何人都有解决方案吗? :)提前感谢...

4 个答案:

答案 0 :(得分:4)

我建议使用filter_input()

$page= filter_input ( INPUT_GET, 
                      'page', 
                      FILTER_VALIDATE_INT,
                      array('options'=>array('min_range' => 1)));
if(!$page)$page=1;

答案 1 :(得分:0)

我只会使用intval()$page的默认值:

$page = 1;

if ( isset($_GET['page']) )
  $page = intval($_GET['page']);

答案 2 :(得分:0)

使用intval将其转换为数字然后检查它。如果值不是数字,intval将返回0:

if (isset($_GET['page']))
    if (intval($_GET['page'] == 0)
        $page = 1;
    else
        $page = intval($_GET['page']);

或更紧凑:

$page = (isset($_GET['page']) && intval($_GET['page'] != 0) ? intval($_GET['page']) : 1;

答案 3 :(得分:0)

你在错误的地方有一个结束括号 - 它应该是:

$page = (isset($_GET['page']) && is_numeric($_GET['page'])) ? (int) $_GET['page'] : 1;