我有一个管理页面,列出了一堆记录,每条记录旁边都有一个复选框,可将其设置为“活动”状态。每个复选框都有一个值,该值与数据库中记录的 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();
?>