【发布时间】:2013-08-11 19:23:23
【问题描述】:
我正在编写一个应用程序,我有一个用户通过电子邮件和密码登录。如果登录正确,我的 node.js 服务器会返回“是”或“否”。
在服务器上,我可以控制台记录结果并每次查看。但是,client.emit 命令仅在第一次之后才有效。并且仅当输入的“电子邮件”和“密码”在这两个时间都相同时。因此,客户端上的警报仅在第二次之后触发。
这是我的服务器代码:
client.on('checkcred', function(email, password){
helper.check(email, password,function(run){
client.emit('conf',run);
console.log(run);
});
});
helper.js
exports.check = function(zmail, pasword,callback){
client.query('SELECT id FROM passwords WHERE email="'+zmail+'"', function(err,data){
if(data.length == 0){
console.log("wrong email");
callback("no");
}else{
var savedemail = data[0].id;
client.query('SELECT password FROM passwords WHERE id='+savedemail+'', function(err,pass){
var databasepass = pass[0].password;
if (pasword == databasepass){
console.log("correct pass");
callback("yes");
}else{
console.log("incorrectpass");
callback("no");
}
});
}
});
}
客户
var socket = io.connect('http://54.213.92.113:8080');
socket.on('conf', function (yn) {
alert(yn);
});
function upload(email, password){
//check the email and password against the saved email and pass.
socket.emit('checkcred', email, password);
}
非常感谢任何帮助!
【问题讨论】:
-
您已经向 SQL 注入攻击敞开了大门。不要将数据连接到数据库查询中!
-
好的,那我该如何获取mysql数据呢?这就是我遇到问题的原因?
-
不,和你的问题无关,但是SQL注入攻击是个严重的问题。您可以在en.wikipedia.org/wiki/SQL_injection 阅读更多内容。为防止这种情况,请始终在输入中转义引号(单引号和双引号)。
标签: javascript mysql node.js socket.io