阻止插入DB的直接URL操作

时间:2016-04-24 13:00:15

标签: php

我在文件viewreport中有一个关于票证的操作:

if(isset($_GET['closeticket']) == 'true')

{

$db->query("update tickets set status='Closed' where id='$id'");

header("Location: viewreport?id=".$id."");

但即使是用户也可以通过网址关闭不属于他的票证。 所以我想阻止直接网址操作。

这是行动

a href "viewreport?closeticket=true&id= <?php echo $id;?>" class="btn btn-danger" id="">Close</a>

2 个答案:

答案 0 :(得分:0)

您应该通过会话或cookie检查此操作是否属于用户。

一定是这样的

if($_SESSION["group"] == "Admin" ){
 // update operation.
}

我希望这会对你有所帮助。

答案 1 :(得分:0)

在执行之前,您应该检查是否允许用户关闭该报告。

因此像:

if(isset($_GET['closeticket'])) 
{
    $userIsAllowed = true; // your magic here
    if ($userIsAllowed) {
        $db->query("update tickets set status='Closed' where id=" . $db->quote($id));
        header("Location: viewreport?id=".$id."");
    } else {
        echo "You're not allowed closing this ticket";
    }
}

请务必按照评论(chelmertz)

中的说明正确转义您的查询