none
有關時間和密碼的問題 RRS feed

  • 問題

  • 各位大大你們好

    之前我有po過這方面的問題

    不過程式碼忘了備份導致忘記了怎麼寫

    而且也衍生出其他的問題

    也請各位大大不吝教導

     private void btn_checkPassword_Click(object sender, EventArgs e)
            {
                //string password = "september0036";

                txt_password.Text = "september0036";
               
                string month = DateTime.Now.ToString("MMM", CultureInfo.GetCultureInfo("EN-US"));

                if (password.IndexOf(month, StringComparison.OrdinalIgnoreCase) == 0)
                {
                    f2 = new Form2();
                    f2.Close();

                    f1 = new Form1();
                    f1.Show();
                      
                }

     

    這是程式碼的部份

    問題1 當我把時間調成9月時不管密碼怎麼打 它都會自動輸入成九月的密碼 而顯示Form1

    問題2 我把時間調成十月 十一月 它都會顯示Form1

     

    請各位大大不吝教導

    非常謝謝你們

    2008年7月29日 上午 02:21

解答

  • string password1 = "september0036";

                string month = DateTime.Now.ToString("MMM", CultureInfo.GetCultureInfo("EN-US"));

                if (password1.IndexOf(month, StringComparison.OrdinalIgnoreCase) == 0)
                {

                    f1 = new Form1();
                    f1.Show();

                }

                else
                {
                    f1 = new Form1();
                    f1.Hide();
                }

     

    不知您的 password1 目的為何, 若依你的需求. 要是我, 我會改成

    Code Snippet

                int checkMonth = 9; //設定目標月為九月
                int extMonth = 3;   //從九月開始, 可延伸使用3個月也就是9,10,11
                int currMonth = DateTime.Now.Month;

                if (currMonth % checkMonth < extMonth)
                {
                    //do 3個月內可以做的事
                }
                else
                {
                    //do 不可以做的事
                }

     

     

    註1:上述的程式依你所提供的程式片段所進行的修改

    註2:若依你目前所言的狀況 2007/9,10,11 & 2008/9,10,11 都可做From1的動作.

    2008年7月30日 上午 07:38

所有回覆

  •  天 寫信:

    各位大大你們好

    之前我有po過這方面的問題

    不過程式碼忘了備份導致忘記了怎麼寫

    而且也衍生出其他的問題

    也請各位大大不吝教導

     private void btn_checkPassword_Click(object sender, EventArgs e)
            {
                //string password = "september0036";

                txt_password.Text = "september0036";
               
                string month = DateTime.Now.ToString("MMM", CultureInfo.GetCultureInfo("EN-US"));

                if (password.IndexOf(month, StringComparison.OrdinalIgnoreCase) == 0)
                {
                    f2 = new Form2();
                    f2.Close();

                    f1 = new Form1();
                    f1.Show();
                      
                }

     

    這是程式碼的部份

    問題1 當我把時間調成9月時不管密碼怎麼打 它都會自動輸入成九月的密碼 而顯示Form1

    問題2 我把時間調成十月 十一月 它都會顯示Form1

     

    請各位大大不吝教導

    非常謝謝你們

     

    程式後來改成

    string password1 = "september0036";

                string month = DateTime.Now.ToString("MMM", CultureInfo.GetCultureInfo("EN-US"));

                if (password1.IndexOf(month, StringComparison.OrdinalIgnoreCase) == 0)
                {

                    f1 = new Form1();
                    f1.Show();

                }

                else
                {
                    f1 = new Form1();
                    f1.Hide();
                }

     

    不過問題卻還是每個月都可以用

    如果我程式使用時間為9 10 11這三個月

    只要打上9月的密碼就可以使用三個月

    請問各位大大這要怎麼改?

     

    2008年7月29日 上午 05:43
  • HI,

     

    如果您的密碼是儲存在資料庫, 可以一併將密碼的逾時日期記入到資料庫, 一旦發現逾時, 再讓使用者無法登入並使用程式即可

     

    tihs

    2008年7月29日 上午 06:21
  • 我不是寫在資料庫裡的

    我是把密碼寫死

    然後用時間判斷

    如果當九月時只能用九月的密碼

    不過我現在面臨的問題

    卻是只要程式裡面的密碼

    其他的月份都可以使用

    超過這三個月份就不行使用

    我不曉得要加什麼樣的判斷式

    是否可以請大大教導一下

     

    2008年7月30日 上午 12:41
  • HI,

     

    如果不是記載在資料庫, 也可以考慮將逾時時間寫入到Windows系統的登錄資訊, 再於使用者登入時抓出來比對亦可

     

    tihs

    2008年7月30日 上午 01:25
  • 是這樣寫嗎

    if (password.IndexOf(month, StringComparison.OrdinalIgnoreCase) == 0)

    如果不是

    是否可以請大大教導一下如何寫

     

    2008年7月30日 上午 01:27
  • string password1 = "september0036";

                string month = DateTime.Now.ToString("MMM", CultureInfo.GetCultureInfo("EN-US"));

                if (password1.IndexOf(month, StringComparison.OrdinalIgnoreCase) == 0)
                {

                    f1 = new Form1();
                    f1.Show();

                }

                else
                {
                    f1 = new Form1();
                    f1.Hide();
                }

     

    不知您的 password1 目的為何, 若依你的需求. 要是我, 我會改成

    Code Snippet

                int checkMonth = 9; //設定目標月為九月
                int extMonth = 3;   //從九月開始, 可延伸使用3個月也就是9,10,11
                int currMonth = DateTime.Now.Month;

                if (currMonth % checkMonth < extMonth)
                {
                    //do 3個月內可以做的事
                }
                else
                {
                    //do 不可以做的事
                }

     

     

    註1:上述的程式依你所提供的程式片段所進行的修改

    註2:若依你目前所言的狀況 2007/9,10,11 & 2008/9,10,11 都可做From1的動作.

    2008年7月30日 上午 07:38
  • 那如果要改成只有一個月只能用一個密碼那麼你的程式要怎麼修改??

    2008年7月30日 上午 08:58
  • 我知道怎麼寫了

    謝謝各位大大的教導

     

    2008年7月30日 上午 09:01