C # Возможность смены пароля один раз в день - PullRequest
0 голосов
/ 28 мая 2018

Я должен написать код для смены пароля

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;
   }
}

Таким образом, пользователь может менять свой пароль каждый раз, когда он хочет, но я хочу, чтобы пользователь мог менять свой пароль только один раз в день,Как я могу написать это условие?

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

используйте DateTime changedpassworddate = DateTime.now();, чтобы получить текущую дату и поместить ее в переменную.

сохранить эту переменную в вашей базе данных.

в следующий раз, когда пользователь введет свой пароль, вы можете получить DateTimeиз базы данных сравните его с текущим DateTime следующим образом:

if(DateTime.now() < changedpassworddate.AddDays(1))
{your abort code}
else
{your continue code}

с использованием метода добавления дней означает, что пользователь может менять свой пароль только один раз каждые 24 часа.поэтому изменение его в 23:59, а затем изменение в 0:01 не сработает.

0 голосов
/ 28 мая 2018

Вам необходимо добавить новый столбец в пользовательскую таблицу, где вы сохраняете значение DateTime с последним DateTime, в котором вводится пароль.

Вы можете получить фактический DateTime с помощью этой функции:

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;
}
...