我正在使用 sockets.io 将用户生成的消息插入到 MySQL 中,但是我在插入带有撇号的记录时遇到了问题。我一直在尝试在客户端脚本上使用 replace() 方法,但输入文本仍然带有撇号。
socket.on('refresh feed',function(msg){
str=msg.replace("'", "\'");
alert(str);
$("#chtxt").append(str + '<br />');
});
以上尝试将警报任何不带特殊字符的字符串,但在存在特殊字符时不会发出警报。 我相信我实际上是在消息已经发送到套接字之后才进行警报。
因此,我尝试使此代码适应监视按Enter键的方式来监视撇号,但也没有成功。
$('#omnibox').keypress(function (e) {
var key = e.which;
if(key == 13) // the enter key code
{
$('input[name = "clicky"]').click();
return false;
}
if(key == 222) // the apostrophe key code
{
alert('Apostrophe!')
return false;
}
});
我研究了如何使用javascript为MySQL替换特殊字符的问题,但发现旧的堆栈解释了为什么客户端验证不是一个好主意。
没关系。如果我不应该在客户端进行此操作,那么我需要知道如何在我的server.js节点脚本中进行操作。它仍然是javascript,因此提供在任一方面(客户端或服务器端)的解决方案,只要它是安全的,都将非常好。
服务器端代码:
var add_status = function (status,callback) {
pool.getConnection(function(err,connection){
if (err) {
callback(false);
return;
}
connection.query("INSERT INTO `videosub` (`url`) VALUES ('"+status+"')",function(err,rows){
connection.release();
if(!err) {
callback(true);
}
});
connection.on('error', function(err) {
callback(false);
return;
});
});
}
谢谢!