C# C每天更改一次密码的可能性

C# C每天更改一次密码的可能性,c#,login,passwords,C#,Login,Passwords,我必须写一个代码来更改密码 if (txtNewPassword.Text == txtConfirmPassword.Text) { mSQL = "SELECT * FROM User WHERE userName = '" + txtUserName.Text + "' AND password = '" + txtPassword.Text + "'"; mDT_Save = mDBHelper.GetTable(mSQL); if (mDT_Save.Rows.

我必须写一个代码来更改密码

if (txtNewPassword.Text == txtConfirmPassword.Text)
{
    mSQL = "SELECT * FROM User WHERE userName = '" + txtUserName.Text + "' AND password = '" + txtPassword.Text + "'";
    mDT_Save = mDBHelper.GetTable(mSQL);
    if (mDT_Save.Rows.Count > 0)
    {
        for (int i = 0; i < mDT_Save.Rows.Count; i++)
        {
            mSQL = "UPDATE User SET password = '" + txtConfirmPassword.Text + "' WHERE userName = '" + Convert.ToString(mDT_Save.Rows[i]["userName"]) + "'";
            mDBHelper.ExecuteSQLNonQuery(mSQL);
        }
        MessageBox.Show("Password Changed Successfully");
        txtPassword.Text = txtConfirmPassword.Text;
        return;
   }
   else
   {
        MessageBox.Show("User Not Found");
        return;
   }
}

这样,用户可以随时更改密码,但我希望用户每天只更改一次密码。如何写入此条件?

您需要在用户表中添加一个新列,在其中存储一个日期时间值,最后一次更改密码的日期时间

您可以使用此函数获取实际日期时间:

DateTime.Now
现在,如果要检查自上次密码更改以来是否已过了24小时,请执行以下操作:

private bool CanChangePassword()
{
    DateTime dt = //value from database (last password change);

    DateTime now = DateTime.Now;

    if (dt == DateTime.MinValue || now > dt.AddHours(24))
    {
        return true;
    }
    return false;
}
if(DateTime.now() < changedpassworddate.AddDays(1))
{your abort code}
else
{your continue code}
使用DateTime changedpassworddate=DateTime.now;获取当前日期并将其放入变量中

将此变量存储在数据库中

下次用户输入密码时,您可以从数据库中获取日期时间,并将其与当前日期时间进行比较,如下所示:

private bool CanChangePassword()
{
    DateTime dt = //value from database (last password change);

    DateTime now = DateTime.Now;

    if (dt == DateTime.MinValue || now > dt.AddHours(24))
    {
        return true;
    }
    return false;
}
if(DateTime.now() < changedpassworddate.AddDays(1))
{your abort code}
else
{your continue code}

使用add days方法意味着用户只能每24小时更改一次密码。因此,在23:59更改它,然后在0:01更改它是不起作用的。

您可以将上次更改的密码日期时间存储在数据库中,并在更新密码之前进行检查。还可以考虑在存储密码之前对密码进行散列。您永远不应该以明文形式存储密码!您可以将用户上次更改密码时保存在DB中,并使用该值验证用户是否可以更改密码。请尝试新密码“;-然后看看如何使用SqlParameter和参数化查询。预期结果:数据库中的所有用户的密码都设置为空字符串。