将获取值与数据库中的某个字段值进行比较

时间:2015-05-08 03:50:56

标签: php

考虑这样的演示网址:www.example.com/act/yes?user_id = 125

我知道黑客或其他人会尝试更改网址中的数字值。

我的问题是如何将来自网址的获取值与yes(www.example.com/act/yes)页面中的某个字段值进行比较,以便只显示具有该获取值的条目用PHP?

我在条件

中尝试了这个
if($_GET['user_id'] == $result[0]->user_id)
{
    show db values
}
else
{
    show nothing
}

其中$result= $this->model->edityes($_GET['user_id']);

$ result将包含包含所有字段数据的数组,其中包含id $ _GET [' user_id']。

2 个答案:

答案 0 :(得分:1)

这个等式中最重要的是$ _GET字符串的值在传递给数据库之前始终被清理。在你的情况下,user_id似乎总是一个整数,所以对你来说它就像:

一样简单
$user_id = (isset($_GET['user_id']) && is_int($_GET['user_id'])) ? $_GET['user_id'] : false;
if($user_id){

} else {

}

在上面我们只是检查user_id param是否存在(?user_id =)以及它是否为int类型(整数)。

同时,如果使用预备语句,您可以轻松传递值并轻松休息。

$stmt = $mysqli->prepare('select * from users where user_id = ?');
$stmt->bind_param('i', $_GET['user_id']);
$stmt->execute();

通过这种方式,我们允许mysqli驱动程序为我们处理数据的清理,因为我们已经告诉它绑定参数$_GET['user_id']也必须是整数。

答案 1 :(得分:0)

$result = $this->model->edityes((int)$_GET['user_id']);
if ($result) {
// do something
} else {
// do something else
}