ページ 11

c#

Posted: 2021年7月07日(水) 10:11
by くぇwq
vs2017 でDBを接続してログイン認証チェック(id,pw)をしています。DBにid,pwの値が存在しない場合に”このidは存在しません”と表示させることはできるのですが、DBに値はあるが、ユーザ1のid、ユーザ2のpwが選択された場合に”idが間違っています”と表示させることができません。

コード:

 int ID = int.Parse(TextBox1.Text);
                string PW = TextBox2.Text;
                bool a = false, b = false;



                while (dataReader.Read())
                {
                    if ((int)dataReader[0] == ID)
                    {
                        a = true;

                    }
                    if ((string)dataReader[8] == PW)
                    {
                        b = true;
                        break;
                    }
                }



                if (!a)
                {
                    errorms.Text = "IDが存在しません";
                    topMessage.Visible = true;
                }
                else if (!b)
                {
                    errorms1.Text = "パスワードが間違っています";
                    topMessage.Visible = true;
                }

                else
                {

Re: c#

Posted: 2021年7月07日(水) 19:22
by みけCAT
まずは作りたいものの仕様をはっきりさせるのがいいでしょう。
・ユーザ1のid、ユーザ1のpwが選択された場合の表示は?
・ユーザ1のid、存在しないpwが選択された場合の表示は?
・存在しないid、ユーザ1のpwが選択された場合の表示は?
・存在しないid、存在しないpwが選択された場合の表示は?
・ユーザ1のid、ユーザ2のpw (ただしユーザ1のpwと同じ) が選択された場合の表示は?
オフトピック
そもそもidが存在するかどうかでメッセージを変えないべきだという主張もありますが…
IPA ISEC セキュア・プログラミング講座:C/C++言語編 第7章 データ漏えい対策:親切すぎるエラーメッセージの回避