完整版 時間限制登入 帶注釋

2021-06-04 02:10:42 字數 3355 閱讀 9567

string str = string.empty;

int errorcount = 0;

private void btn_login_click(object sender, eventargs e)

//獲得連線字串

str =configurationmanager.connectionstrings["ctrcnn"].connectionstring;

#region 判斷超過三次鎖定

errorcount = geterror();

datetime errortime = getdatetime();

timespan span = datetime.now.subtract(errortime);

double theseconds = span.totalseconds;

if (errorcount>=3)

if (theseconds<15)

messagebox.show("你已經連續錯誤3次,已被系統鎖定,請在15秒之後再登入,或練習管理員");

return;

else

errorcount = 0;

updataerror(errorcount);

#endregion

#region 判斷使用者是否合法

datatable dt=getdatatable();

if (dt.rows.count<=0)

errorcount++;

updataerror(errorcount);

updatatime();

messagebox.show("你的帳號或密碼錯誤!");

else if(dt.rows.count>1)

else

messagebox.show("ok!");

#endregion

//從資料庫中讀取帳號密碼資料

private datatable getdatatable()

sqlconnection cnn = new sqlconnection(str);

sqlcommand cmm = new sqlcommand();

cmm.connection = cnn;

cmm.commandtext = "select * from t_user where username=@usernameand password=@password";

cmm.parameters.addwithvalue("@username", txtuser.text);

cmm.parameters.addwithvalue("@password", txtpassword.text);

cnn.open();

sqldataadapter adr = new sqldataadapter(cmm);

datatable dt = new datatable();

adr.fill(dt);

cmm.dispose();

cnn.dispose();

return dt;

//從資料空中讀取error次數

private int geterror()

sqlconnection cnn = new sqlconnection(str);

sqlcommand cmm = new sqlcommand();

cmm.connection = cnn;

cmm.commandtext = "select error from t_user whereusername=@username";

cmm.parameters.addwithvalue("@username", txtuser.text);

cnn.open();

object obj = cmm.executescalar();

cnn.close();

if (dbnull.value.equals(obj))

return 0;

else

return convert.toint32(obj);

//更改錯誤次數

private void updataerror(int errorcount)

sqlconnection cnn = new sqlconnection(str);

sqlcommand cmm = new sqlcommand();

cmm.connection = cnn;

cmm.commandtext = "update t_user set error=@error whereusername=@username";

cmm.parameters.addwithvalue("@error", errorcount);

cmm.parameters.addwithvalue("@username", txtuser.text);

cmm.executenonquery();

cnn.close();

//記錄登入錯誤time

private void updatatime()

sqlconnection cnn = new sqlconnection(str);

sqlcommand cmm = new sqlcommand();

cmm.connection = cnn;

cmm.commandtext = "update t_user set errortime=@errortime whereusername=@username";

cmm.parameters.addwithvalue("@errortime", datetime.now);

cmm.parameters.addwithvalue("@username", txtuser.text);

cnn.open();

cmm.executenonquery();

cnn.close();

//獲取資料庫時間

private datetime getdatetime()

sqlconnection cnn = new sqlconnection(str);

sqlcommand cmm = new sqlcommand();

cmm.connection = cnn;

cmm.commandtext = "select errortime from t_user whereusername=@username";

cmm.parameters.addwithvalue("@username", txtuser.text);

cnn.open();

datetime dt =convert.todatetime( cmm.executereader());

return dt;

使用者登入驗證完整版

對於講課來說,能否正確,清晰,易懂的表達自己的想法很重要,今天再講連線查詢的時候就深有體會,為了讓別人明白自己再說什麼,可以說是想盡辦法。後來發現,原來世界上最美妙的聲音就是聽眾的一聲拉著長音的 奧 當然是不帶拐彎的 下面將登入驗證的完整版的 貼在這裡,其中當前時間和最後一次登入錯誤時間的比較吸取了...

BingoCard遊戲完整版(內含注釋)

html charset utf 8 make your own bingo cardtitle src js jquery 3.3.1.min.js script rel stylesheet href bingocard.css src bingocard.js script head ceat...

完整版websocket帶資料庫

use swoole coroutine as co class swoolechat n this ws push request fd,hello,welcome n 監聽websocket收到資訊 this ws on message function ws,frame n self onme...