检查用户登录系统时输入的字符串。 在我的代码中发生的是,数据库库中的密码保存为小写但是当我使用大写登录时,它可以登录系统
public void login()
{
try
{
if (USERNAME != "" && PASS != "")
{
string login = "SELECT * from rfidprototype.account where username ='" + USERNAME + "' and password = '" + PASS + "';";
MySqlCommand cmdDB = new MySqlCommand(login, SQLconn);
MySqlDataReader DRead;
DRead = cmdDB.ExecuteReader();
if (DRead.Read())
{
if (USERNAME == "admin")
{
MenuHere menu = new MenuHere();
menu.Show();
SQLconn.Close();
}
else
{
MenuHere menu1 = new MenuHere();
menu1.Show();
menu1.ManageTile.Enabled = false;
SQLconn.Close();
}
}
else
{
//MessageBox.Show("Incorrect Username or Password!");
MessageBox.Show("Incorrect Username or Password", "Laptop Ownership Identifier System", MessageBoxButtons.OK, MessageBoxIcon.Error);
DiriLogin form = new DiriLogin();
form.ShowDialog();
}
}
else
{
// MessageBox.Show("Incorrect Username or Password!");
MessageBox.Show("Please input username or password", "Laptop Ownership Identifier System", MessageBoxButtons.OK, MessageBoxIcon.Error);
DiriLogin form = new DiriLogin();
form.ShowDialog();
}
}catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
答案 0 :(得分:1)
首先你有Sql Injection的问题。阅读MySqlCommand.Parameters
以及如何使用它。以下是您的查询应该如何:
string login = "SELECT * from rfidprototype.account where username =@UserName and password = @Password COLLATE Latin1_General_CS_AS";
MySqlCommand cmdDB = new MySqlCommand(login, SQLconn);
cmdDB.Parameters.AddWithValue("@UserName", USERNAME);
cmdDB.Parameters.AddWithValue("@Password", PASSWORD);
在带有COLLATE Latin1_General_CS_AS
的Sql Server中,您告诉sql server使用区分大小写的检查查看密码。对于MYSQL,我认为它应该是COLLATE latin1_general_cs
答案 1 :(得分:0)
所以这是一个很好的方式来做你想要的。基本上将字符转换为 unicode (我没有测试过以下但它应该有用,或者至少指向正确的方向)
ax=plt.gca()
im=ax.images[-1]
im.colorbar.remove()
#in real code, color range is updated here
plt.colorbar()