在我网站的词汇表的admin部分,我写了一个ajax函数,它在插入表单之前检查mysql数据库中是否有相同术语的现有条目,以避免重复输入。
该功能有效,但仅在术语不包含任何外语字符时才有效。该网站的主要语言是法语,因此有很多这样的语言。数据库表以latin1_swedish_c1(默认)编码。
JS
$('input[id=term]').live('focusout',function(){
var element = $(this).attr('id');
var term = $(this).val();
if(term != ""){
// alert(term);
$(this).closest('tr').children().eq(2).load('ajax/term_chk.php', {'term':term}, function(data){
$(this).html(data);
});
}
});
PHP term_chk.php调用以下函数:
function checkTerm($term)
{
$qry = "select * from trm where term = '".addslashes($term)."' limit 1";
$qry_res = mysql_query($qry);
if(mysql_numrows($qry_res) > 0)
{
$t = mysql_fetch_assoc($qry_res);
$checkStr = '<span style="background-color: #F00; padding: 1px 10px">ID '.$t['id'].'</span>';
} else {
$checkStr = '<span style="background-color: #5BB26B; ; padding: 1px 10px">OK</span>';
}
return $checkStr;
}
提前感谢您的帮助
答案 0 :(得分:1)
三件事:
addslashes()
不足以防止SQL注入。使用特定于数据库连接的功能,例如mysql_real_escape_string()
。更好的是,更新到PDO或mysqli库; mysql库已经过时了。latin1_swedish_ci
,而不是latin1_swedish_c1
。