iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 21
0
Modern Web

慢慢帶你了解Flask系列 第 21

慢慢帶你了解Flask - Day21 Secret Talk(3):註冊與驗證信發送

  • 分享至 

  • xImage
  •  

大家好,我是長風青雲。
今天是鐵人賽的第二十一天,我們今天來做註冊的部分吧~
這次抽籤抽到藍色~

UI介面

這部分以前都說過了,我們來快進~
寫好首頁、登入、註冊頁面後就跳入後端~
https://ithelp.ithome.com.tw/upload/images/20230606/20120116Pazj3NE3BH.png
https://ithelp.ithome.com.tw/upload/images/20230606/20120116Xt38P9qrrt.png
https://ithelp.ithome.com.tw/upload/images/20230606/201201162g1qzfKlwg.png

後端

首頁跟之前差不多我就不多做贅述,我們先來處理register部分。
我說過,我們註冊的時候要做信箱的驗證,所以我們會使用到flask-mail
但與此同時我們也必須將我們使用者的名稱放入資料庫中,那就先讓我們來說MySQL部分吧。

MySQL部分

https://ithelp.ithome.com.tw/upload/images/20230606/20120116zAawpTurxE.png
我想了很久,將我們的資料表建置成這樣,雖然其實他完全可以大家在同一個資料表裡哈哈哈。
首先我會將資料全部放在unconfirm資料表中,其中register就是我們驗證的時間,如果我們未在應驗證的時間內驗證,他將會把你的資料從unconfirm中刪除。
但這些我們先不說,還是先將我們輸入資料庫的部分寫好來吧~

@app.route('/register/',methods=['GET','POST'])
def register():
	if request.method=='POST':
		command="SELECT * FROM information where account='%s'" % request.form['userid']
		cursor.execute(command)
		result = cursor.fetchone()
		if result==None:
			command="SELECT * FROM unconfirm WHERE ACCOUNT='%s'" % request.form['userid']
			cursor.execute(command)
			result = cursor.fetchone()
		if result != None:
			return render_template('register.html',alert='此帳號已有人註冊',nick=request.form['username'])
		elif request.form['userpw']!=request.form['conf_pw']:
			return render_template('register.html',alert='密碼與確認密碼不同',id=request.form['userid'],nick=request.form['username'])
		else:
			command = "INSERT INTO unconfirm VALUES (%s,%s,%s,%s,%s,%s)"
			val=(request.form['userid'],request.form['userpw'],request.form['username'],request.form['email'],request.form['public_key'],time.time())
			cursor.execute(command, val)
			db.commit()
		return redirect(url_for('index'))
	return render_template('register.html')

第一個command是確認是否有此帳戶,若無則result會回傳None。
第二個command是確認此帳戶是否在unconfirm中。
第三個command是已經要新增用戶了,我們會先將用戶加在unconfirm中,等帳戶驗證後再做移轉的動作(這部分還沒寫)。
我們先來看看操作資料庫的實際影片。

flask-mail

接著我們要使用系統發送驗證信,就需要使用這個了~
我想了想,請大家看這個網站他說得非常詳細,所以這部分我便不多作著墨。我使用的是hotmail,因為可以直接使用,不需要向gmail一樣需要申請第二個密碼。


上一篇
慢慢帶你了解Flask - Day20 Secret Talk(2):MySQL安裝和Python操作MySQL
下一篇
慢慢帶你了解Flask - Day22 Secret Talk(4):註冊與驗證+定時任務
系列文
慢慢帶你了解Flask30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言