我在另一个页面的链接中传递数据库生成的id值。在我呼叫$_GET
的接收页面中,我希望防止人们在网址?
之后插入虚假值(例如www.mysite.com?id=43)。
我想检查传入的值并确保它是数据库中的有效ID,或者是否有办法只检查NULL值或为空?这就是我尝试过的:
来源页面:
echo "<a href=\"get-post-pg2.php?id=" .urlencode($row['id']) ."\">Second Page</a>";
目标网页:
$id = $_GET['id'];
if(isset($_GET)) {
echo $id;
} else
echo 'foo';
}
答案 0 :(得分:0)
你应该做的是将$ _GET变量强制转换为整数...
$id = (int) $_GET['id'];
然后检查是否为空..
if(!empty($id)){
// process code
}
任何字符串都将转换为零,在php中返回为空。 然后检查数据库中是否存在该ID!
答案 1 :(得分:0)
检查传入值并确保它是来自数据库IS的有效id的唯一方法是对数据库进行查询。简单,嗯?
我希望防止人们在使用后插入虚假值?在网址中。
答案更简单 - 你不能 你可以验证你的身份,但我个人很少因为这么愚蠢的原因而无法验证变量。
答案 2 :(得分:-1)
在目标网页上,我只需检查$ _GET [&#39; id&#39;]以确保它是您需要的范围内的整数,如果不是,则将其默认为某个值或重定向用户。
if(is_int($_GET['id']) And $_GET['id']>=1 And $_GET['id'] <= 1000) {
//proceed
}
else {
header('Location:...'); // or set $id to a default value
}