C# 更改密码无效
我有一个用户输入当前用户名和密码的网页。如果它们与数据库中的用户匹配,则密码将更改为新密码 如果没有错误且密码已更改,则会将用户重定向到初始登录页面。如果出现错误,则会显示错误消息 但是,在密码未更改的时刻,以及当假定存在错误时,即当密码未更改时,它只是将用户重定向到登录页面 我的代码:C# 更改密码无效,c#,mysql,C#,Mysql,我有一个用户输入当前用户名和密码的网页。如果它们与数据库中的用户匹配,则密码将更改为新密码 如果没有错误且密码已更改,则会将用户重定向到初始登录页面。如果出现错误,则会显示错误消息 但是,在密码未更改的时刻,以及当假定存在错误时,即当密码未更改时,它只是将用户重定向到登录页面 我的代码: public static MySqlConnection CreateConnection() { String connectionString = "SERVER=127.0.0
public static MySqlConnection CreateConnection()
{
String connectionString = "SERVER=127.0.0.1; DATABASE='dbnumericalmethods'; UID='root'; PASSWORD=''";
MySqlConnection SqlConnection = new MySqlConnection(connectionString);
return SqlConnection;
}
protected void btnChange_Click(object sender, EventArgs e)
{
MySqlConnection SqlConnection = CreateConnection();
string OldPassword;
string NewPassword;
string Username;
string ConfirmPassword;
Username = txtUsername2.Text;
OldPassword = txtOldPassword.Text;
NewPassword = txtNewPassword.Text;
ConfirmPassword = txtConfirmPassword.Text;
string SqlString = "update tblLogin set Identification='" + NewPassword + "' WHERE [Identification]='" + OldPassword + "' AND Username='" + Username + "'";
SqlConnection.Open();
MySqlCommand cmd = new MySqlCommand(SqlString, SqlConnection);
SqlConnection.Close();
if (OldPassword != "" && NewPassword != "" && ConfirmPassword != "")
{
Response.Redirect("Login.aspx");
}
else
{
lblErrorMessage2.Text = ("Username ");
}
}
您甚至没有执行命令,只是打开连接,创建一个
MySqlCommand
,然后立即关闭连接:
MySqlCommand cmd = new MySqlCommand(SqlString, SqlConnection);
int result = cmd.ExecuteNonQuery();
SqlConnection.Close();
顺便说一句,您应该使用以避免
SQL注入
您甚至没有执行该命令,您只是打开连接,创建一个MySqlCommand
,然后立即关闭连接:
MySqlCommand cmd = new MySqlCommand(SqlString, SqlConnection);
int result = cmd.ExecuteNonQuery();
SqlConnection.Close();
顺便说一句,您应该使用以避免
SQL注入
,作为一个旁注,您的代码对SQL注入是开放的。请参阅以获取一些建议-但简而言之,决不要将用户提供的字符串接受到sql语句中-使用参数化查询/准备语句。您不需要添加检查以确保NewPassword和ConfirmPassword匹配吗?另外,您的代码受SQL注入的影响,最好使用存储过程,而不是执行SQL命令。您应该添加cmd.ExecuteNonQuery();您可能希望在if语句中使用string.isNullOrWhitespace(OldPassword)
etc.@Rutix当我添加时,我得到以下错误:检查与您的MySQL服务器版本对应的手册,以了解在“[Identification]附近使用的正确语法第1行的='sugg'和Username='callum''作为旁注,您的代码可以接受SQL注入。请参阅以获取一些建议-但简而言之,决不要将用户提供的字符串接受到sql语句中-使用参数化查询/准备语句。您不需要添加检查以确保NewPassword和ConfirmPassword匹配吗?另外,您的代码受SQL注入的影响,最好使用存储过程,而不是执行SQL命令。您应该添加cmd.ExecuteNonQuery();您可能希望在if语句中使用string.isNullOrWhitespace(OldPassword)
etc.@Rutix当我添加时,我得到以下错误:检查与您的MySQL服务器版本对应的手册,以了解在“[Identification]附近使用的正确语法='sugg'和Username='callum''在第1行进行更改时,我收到以下错误消息:您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第行“[Identification]=“sugg”和Username=“callum”附近使用的正确语法1@user2852418从标识中删除方括号
,它不是保留关键字,据我所知…请看,您需要使用`来转义MYSQL中的保留关键字。请看这个问题:谢谢,它现在更改了密码,但是当输入错误的密码时,我仍然没有收到任何错误消息?@user2852418检查结果是否大于零ExecuteNonQuery
返回受影响的行数。使用简单的if语句?在进行更改时,我会收到以下错误消息:您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第行“[Identification]=“sugg”和Username=“callum”附近使用的正确语法1@user2852418从标识中删除方括号
,它不是保留关键字,据我所知…请看,您需要使用`来转义MYSQL中的保留关键字。请看这个问题:谢谢,它现在更改了密码,但是当输入错误的密码时,我仍然没有收到任何错误消息?@user2852418检查结果是否大于零ExecuteNonQuery
返回受影响的行数。是否使用简单的if语句?