ソルトとハッシュの議論を脇に置きます。そして、答えがわかっている場合にのみ返信してください。
ユーザーがログインおよびログアウト時に日付と時刻を含むクレデンシャルを自動的に記録するメソッドを作成しようとしています。
私は2つの問題があります
問題1-ログインとログアウトのためだけの簡単なメソッドを作成しました。日付と時刻のコードを含めたとき、これらはすべてのユーザーのために記録および保存されていることに気づきました。現在、2人のユーザーがいます。したがって、1人のユーザーがログインした場合、日付と時刻が記録され、他のユーザーのスタンプが押されます。
問題2-2番目の問題は、UpdateコマンドパラメーターがSelectと同じメソッドである場合に、サブジェクトヘッダーにエラーメッセージが表示されることです。
誰かが私を助けることができれば、私は両方の問題に感謝するでしょう。うまくいけば、それはマイナーな問題にすぎませんか?日時を省略した場合は、マルチログイン機能を教えていただければ幸いです。
アクセス2003〜2つのテーブル。表1-名前付きLoginTable表2-名前付きLoginLogTable
LoginTable
FieldName DataType
UserName Text
Password Text
LoginLogTable
FieldName DataType
UserNameID Text
UserName Text
LoggedIn Date/Time
LoggedInTime Date/Time
private void btnLogin_Click(object sender, EventArgs e)
{
using (var command = myCon.CreateCommand())
{
command.CommandText = "select UserName, Password from LoginTable where WHERE STRCOMP(UserName, @UserName,0) = 0 AND STRCOMP(Password, @Password,0)=0";
command.Parameters.AddWithValue("UserName", (txtUserName.Text));
command.Parameters.AddWithValue("Password", (txtPassword.Text));
myCon.Open();
var reader = command.ExecuteReader();
{
if (reader.HasRows)
{
MessageBox.Show("Login Successful");
Form2 frm = new Form2();
frm.Show();
while (reader.Read())
{
txtUserName.Text = reader["UserName"].ToString();
txtPassword.Text = reader["Password"].ToString();
}
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = myCon;
cmd.CommandText = "UPDATE [LoginLogTable] SET [LoggedInDate] = ?, [LoggedInTime] = ?";
cmd.Parameters.AddWithValue("@LoggedInDate", DateTime.Now.ToShortDateString());
cmd.Parameters.AddWithValue("@LoggedInTime", DateTime.Now.ToString("HH:mm"));
cmd.ExecuteNonQuery();
myCon.Close();
}
else MessageBox.Show("Login Falied");
}
}
myCon.Close();
myCon.Close();
}