所以我在 Codeigniter 中编写了一个使用 PHP 和 Jquery 的注释脚本。
基本上,用户写一条评论,然后点击提交。然后,我使用 AJAX 调用服务器端脚本来检查、验证和插入评论。
在 JQuery 端,我使用 encodeURIComponent
$.ajax({
url : 'http://domain.com/ajax/post_comment',
type : 'post',
data : encodeURIComponent( $(this).val() ),
success : function(data){
//more code here
}
});
在 PHP 端,正如我所说,我正在使用 CodeIgniter,因此我使用 CodeIgniter 提供的 Binding 转义注释,如下所示
$sql = "INSERT INTO video_comments VALUES(NULL, ?);
$this->db->query($sql,array($comment));
这工作得很好,可以转义和插入
!"£$%^&*()_+=-}{~@:?></.,#;][¬`|
现在的问题是,它不能插入'
(单引号)或\
(反斜杠)?我猜是因为它没有正确地转义它们?
一个线索可能是它确实允许我插入 \'
我猜它逃脱了单引号?但我本以为 CodeIgniters 绑定(bind)至少可以解决这个问题?
有什么想法吗?
最佳答案
更新:根据下面的讨论,查询绑定(bind)使查询本身安全,因此无需单独使用转义函数。
恕我直言,如果您不太(又太)担心性能,最好、最安全的方法是使用 CodeIgniter Active Record Class 进行查询。 IMO,如果禁用 Active Record,性能只会略有提高,但如果启用并使用,则会带来很多好处。
http://codeigniter.com/user_guide/database/active_record.html
关于php - 使用 JQuery 和 CodeIgniter 将注释安全地写入数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8607867/