我正在构建应用,我希望用户能够删除一些项目。
我为删除按钮获取了此代码
<a class='delete_item' id='".$rs['id']."'><i class='icon-cancel'> </i></a>
单击
时调用js文件...
$.ajax({
type:'POST',
url:'set_order.php',
data:'delete_item='+item_id,
beforeSend: function() {
},
success:function() {
window.location.reload(true)
}
});
...
打开set_order.php文件并处理此代码
if($_POST['delete_item']) {
$id = $_POST['delete_item'];
$sql = "DELETE from list_items where ID = $id";
$query = $pdo->prepare($sql);
$query->execute();
}
一切正常,但它根本没有保障:)如果用户检查页面并更改了&#34; id&#34;如图所示
点击&#34;删除&#34;按钮,将删除用户更改的ID项而不是原始ID。
检查数据的最佳方法是什么?
答案 0 :(得分:2)
收到删除项目的请求后,请检查他们是否拥有该项目,如果没有,请不要将其删除。
if(isset($_POST['delete_item'])){
if(userOwnsItem($_SESSION['id'], $_POST['delete_item']){
// Valid request
}else{
// Invalid request
}
}
其中$_SESSION['id']
是用户的ID,函数userOwnsItem
对项目执行查询,并检查所有者是否与用户具有相同的ID。
答案 1 :(得分:0)
首先,这不是AJAX,因为您重新加载页面。您应该根据响应和调用编辑DOM元素,而不是手动重新加载。事实上,如果你在php中执行DELETE选项,以正常方式执行它会更好更安全,只需重定向到某个页面,并且成功删除你重定向到某个地方或返回到同一页面。如果你想要一个真正的ajax请求并希望保护动作并阻止其他用户这样做,那么有很多方法和方法。您可以检查用户是否允许删除请求的ID,您可以授权某些用户能够执行此操作。最重要的是数据传输。您永远不应该让未加密的数据通过。所以你基本上应该这样做:
答案 2 :(得分:-1)
insert&#34; echo $ sql;&#34;在php结束测试你的SQL是正确的