我有以下代码
$page = $_GET['p'];
if($page == "")
{
$page = 1;
}
if(is_int($page) == false)
{
setcookie("error", "Invalid page.", time()+3600);
header("location:somethingwentwrong.php");
die();
}
//else continue with code
Run Code Online (Sandbox Code Playgroud)
我将用它来查看数据库的不同"页面"(结果1-10,11-20等).但是,我似乎无法使is_int()函数正常工作.将"1"放入url(noobs.php?p = 1)会给出无效的页面错误,以及类似"asdf"的内容.
我最近被告知有FILTER_VALIDATE_INT,顺便说一句.
我的问题是从网站获取整数值,无论是来自用户还是从Web应用程序生成,并通过查询字符串传递.
可以在mysql查询中显示或使用值(整数).
我正在尝试为此构建最好的安全方法.
考虑到这一点,简单使用是否安全
$myNum = (int)$_GET['num'];
Run Code Online (Sandbox Code Playgroud)
要么
if (filter_var($_GET['num'], FILTER_VALIDATE_INT)) $myNum = $_GET['num'];
Run Code Online (Sandbox Code Playgroud)
另外,请解释使用(int)和之间的区别FILTER_VALIDATE_INT