我用 php - CodeIgniter 框架和 JavaScript - jQuery 和 Bootstarp 框架编写了一个应用程序。我喜欢实现一个通用的“现场编辑”方法,我不喜欢使用任何插件,所以我使用:
<div class='editField">
<input name="<?=$value->id?>" data-t="table_name" data-n="field_name" data_func="update" value="$value->value"/>
</div>
<script>
$(function () {
$('.editField').on('focusout', 'input, select', function () {
var dta = {
't' : $(this).attr('data-t'),
'n' : $(this).attr('data-n'),
'i' : $(this).attr('name'),
'val' : $(this).val()
};
var le = 'index.php/linkToUpdateController/'+$(this).attr('data-func');
$.ajax({
type: 'POST',
url: le,
data: dta
});
});
});
</script>
和linkToUpdateController.php:
public function update() {
$arr = array(
$this->input('n') => $this->input('val')
);
$this->db->where('id', $this->i);
$this->db->update($this->t, $arr);
}
我知道 CodeIgniter activeRecords ->where() 方法会自动转义并产生更安全的查询,但我对 html5 'data-' 声明方法感到有些奇怪,因为我需要使用真实的表名和字段名,而我的方法变得如此透明的。
因此,任何关于此方法安全问题的赞赏、评论或线索都将不胜感激,但我的意图是使用“现场编辑”方法不要退出。谢谢!狮子座。