如何检查查询字符串中的id是否有效?

时间:2012-03-08 20:09:26

标签: php

我在另一个页面的链接中传递数据库生成的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';
}

3 个答案:

答案 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
}