標籤:python 登入 login_main 使用者類比登陸
一 程式介紹
1.1 檔案分布
login_user.jpg 流程圖資訊
README.txt
login_main_v1.1.py 主程式
user_config.conf 設定檔
流程圖:
650) this.width=650;" src="http://s1.51cto.com/wyfs02/M02/82/5C/wKioL1dSgS7QhNkvAAGYzFmv3t4581.jpg-wh_500x0-wm_3-wmp_4-s_2538692698.jpg" title="login_user.jpg" alt="wKioL1dSgS7QhNkvAAGYzFmv3t4581.jpg-wh_50" />
README.txt
####by cw#####
login_main_v1.1.py
#2016-06-04
程式運行說明:
1.運行程式login_main.py
2.輸入使用者名稱和密碼,Input_check()檢查使用者輸入是否正確,使用者名稱和密碼不可為空,密碼至少6位元,如果不符合規範,返回到登入介面即可輸入
3.如果合格,那麼就執行Login_check(),檢查使用者是否被鎖定,如果鎖定,則退出,如果沒有鎖定,繼續下一步
4.繼續檢查使用者Login_passwd_check(),登入使用者名稱是否正確,如果正確,就給出歡迎介面
5.如果使用者名稱和密碼不對,執行Login_Limit_Check()那麼就返回到登入介面,計數器加1,如果計數器大於了3次,那麼鎖定使用者並退出
後續可擴充的內容:
註冊使用者到mysql
鎖定使用者可以儲存到memcached/redis
web展現次功能
根據後面綜合練習繼續改進
#######end README.txt###############
user_config.conf
#username,password,status,lock_count
chenwei ,chenwei ,N,0
chenwei2,chenwei,Y,0
chenwei3,chenwei,Y,0
二 編碼
具體代碼如下,有些實現方法還不夠簡單,後續第二版本最佳化
#/bin/python#coding=utf-8#by cw#2016-06-03import osUser_conf_file=‘D:\chenwei\data\user_config.conf‘User_conf_tmp=‘D:\chenwei\data\user_config_tmp.conf‘Count_limt=0def Welcome_Main(): print ‘‘‘ Welcome to Python World!!!!!!! by cw ‘‘‘def Read_Config_File(file,username): ‘‘‘ :param file: 設定檔 :param username: 輸入的使用者名稱 :return: 讀取使用者設定檔,返回使用者名稱,鎖定狀態 ‘‘‘ fn=open(file) User_conf=‘‘ Status=‘‘ Count=‘‘ Passwd=‘‘ for line in fn: if line.split(‘,‘)[0].strip() == username: #根據使用者名稱去尋找,需要注意去掉空格 User_conf=line.split(‘,‘)[0] #返回使用者名稱 Passwd=line.split(‘,‘)[1] #返回密碼 Status=line.split(‘,‘)[2] #返回狀態 Count=line.split(‘,‘)[3] #返回次數 fn.close() return (User_conf,Passwd,Status,Count) # 返回狀態def Input_Check(username,passwd): Flag=True if len(username) == 0: print ‘The username is NULL,please input againt!!!‘ Flag=False if len(passwd) == 0: print ‘The passwd is NUll,please input againt!!!!‘ Flag=False if len(passwd) < 6: print "The passwd length is not enough!" Flag=False return Flagdef Login_Lock_Check(status): if status == ‘Y‘: return False #the user don‘t locked else: return True #the user lockeddef Lock_Usered(file,file_tmp,username): fn = open(file) fn_tmp = open(file_tmp, ‘a‘) new_line = [] for line in fn.readlines(): #讀取設定檔的每一行 if line.split(‘,‘)[0].strip() == username: new_line.append("%s ," % username) new_line.append("%s ," % line.split(‘,‘)[1].strip()) new_line.append(‘N,‘) new_line.append(‘%s \n‘ % line.split(‘,‘)[3].strip()) fn_tmp.writelines(new_line) continue fn_tmp.writelines(line) fn.close() fn_tmp.close() os.remove(file) os.rename(file_tmp, file)while True: Config_list=‘‘ Name = raw_input(‘Please input your name: ‘) Passwd = raw_input(‘Please input your password: ‘) if Input_Check(Name,Passwd) == False : #檢查使用者名稱和密碼的規範性 continue else: Config_list=Read_Config_File(User_conf_file,Name) #返回設定檔裡面的內容 if Login_Lock_Check(Config_list[2]): #返回使用者狀態 print "The user is locked" exit() else: if Name == Config_list[0] and Passwd == Config_list[1]: Welcome_Main() exit() else: Count_limt = Count_limt + 1 if Count_limt == 1: print ‘The Username or password is not right,you maybe try two!!!‘ if Count_limt == 2: print ‘The Username or password is not right,you maybe try one!!!‘ if Count_limt >= 3: Lock_Usered(User_conf_file,User_conf_tmp,Name) print "user locked!!!" exit()
本文出自 “痞子廚子戲子” 部落格,請務必保留此出處http://chenwei.blog.51cto.com/32183/1786067
python綜合練習1-- 使用者登入