【发布时间】:2014-03-01 10:33:09
【问题描述】:
我有记录列表。我的每条记录都有删除按钮,我正在使用$.ajax() 功能删除记录。但是当我单击删除按钮时,它不会从数据库中删除记录,并且当我警告数据时,它会输出整个 html 页面。下面是代码。请帮帮我。
html代码
<tbody>
<tr class="gradeX odd">
<td class="sorting_1">2</td>
<td class=" ">test</td>
<td class=" ">test</td>
<td class="center ">0</td>
<td class="center ">Active</td>
<td class=" "><button type="button" class="btn btn-default btn-circle" name="editRecord"><i class="fa fa-pencil-square-o"></i></button>
<button type="button" class="btn btn-danger btn-default btn-circle" id="2" name="deleteRecord"><i class="fa fa-times"></i></button></td>
</tr>
<tr class="gradeX even">
<td class="sorting_1">3</td>
<td class=" ">sarees</td>
<td class=" ">contains sarres</td>
<td cl="center ">1</td>
<td class="center ">Active</td>
<td class=" "><button type="button" class="btn btn-default btn-circle" name="editRecord"><i class="fa fa-pencil-square-o"></i></button>
<button type="button" class="btn btn-danger btn-default btn-circle" id="3" name="deleteRecord"><i class="fa fa-times"></i></button></td>
</tr>
</tbody>
jquery
$(document.body).on('click', '[name="deleteRecord"]', function(){
var id= $(this).attr('id');
var parent = $(this).parent().parent();
if (confirm("Are you sure you want to delete this row?"))
{
$.ajax({
type: "GET",
url: "admin_operation.php?mode=delete_category&id="+id,
cache: false,
success: function(data)
{
alert(data);
parent.fadeOut('slow', function() {$(this).remove();});
}
});
}
});
php 代码
$mode = $_GET['mode'];
if($mode!='add_category' || $_GET['mode']!= "delete_category")
{
header('location:dashboard.php');
die;
}
if($mode=='delete_category')
{
$id=$_GET['id'];
$q=$db->query("DELETE FROM db_category WHERE category_id='".$id."'");
if($q){ echo "yes";}
else{ echo "no";}
}
【问题讨论】:
-
你在这里做的事情真的很危险。首先,任何人都可以通过该 URL 删除内容,其次,您对 SQL 注入持开放态度。
-
@marty 但使用 post 方法,我得到了同样的错误。我该怎么办?
-
POST不会阻止这两件事。 -
让我们忽略这个脚本非常危险的事实,我认为问题在于它正在寻找一个字符串 category_id (category_id='".$id."') 而它应该寻找一个整数(category_id=".$id.")。
-
@user3288891,不确定是什么错误,但是,为了保护 - 在查询之前,在 .php 文件的开头,检查 admin 是否已登录,并在插入之前检查 var id在查询中。