我有一个管理页面,列出了一堆记录,每条记录旁边都有一个复选框,将其设置为“活动”状态。每个复选框都有一个值,该值与数据库中记录的 ID 相关联。如果有人使用 FireBug,他们可以轻松地将复选框的值更改为不同的数字,从而影响数据库中的错误记录。
我并不非常担心这种情况的发生,因为它只是一个只有一个用户的管理页面,我敢肯定他对 FireBug 一无所知.. 但我只是好奇,以防我将来遇到这个问题一个更面向公众的页面。
这是我目前拥有的代码,因此您可以了解我在做什么。
HTML + PHP..
<input type="checkbox" class="active" name="active<?php echo $id; ?>" id="active<?php echo $id; ?>" <?php if ($active == 1): ?>checked="checked"<?php endif; ?> value="<?php echo $id; ?>">
jQuery ajax..
$("input.active").click(function() {
var loader = $(this).prev().prev();
$(loader).css("visibility","visible");
// store the values from the form checkbox box, then send via ajax below
var check_active = $(this).is(':checked') ? 1 : 0;
var check_id = $(this).attr('value');
console.log(check_active);
console.log(check_id);
$.ajax({
type: "POST",
url: "active.php",
data: {id: check_id, active: check_active},
success: function(){
$(loader).css("visibility","hidden");
}
});
return true;
});
这里是active.php ..
<?php
include("dbinfo.php");
mysql_connect($server,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
$active = mysql_real_escape_string($_POST['active']);
$id = mysql_real_escape_string($_POST['id']);
$addEntry = "UPDATE entries SET active = '$active' WHERE id = '$id'";
mysql_query($addEntry) or die(mysql_error());
mysql_close();
?>