您好,
我想只允许$_GET
方法中的数字。我使用这是分页来保护
$page = (isset($_GET['page']) && is_numeric($_GET['page']) ? (int) $_GET['page'] : 1);
如果我输入特殊字符或alpha,则会返回错误
这不应该是可能的:
index.php?page=AA
和
index.php?page='!@#$%^&*()
只有这个:
index.php?page=1
或2 ...
任何人都有解决方案吗? :)提前感谢...
答案 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;