Q : 想寫一個EMAIL驗證的功能,
就像加入藍色小舖會員時系統發給會員MAIL,
當點選連結時才代表帳號啟用
以前我都會寫一個範例,分享出來。
後來我覺得:如果不會自己思考、自己不能把流程列出來
到頭來還是「伸手牌」
直接拆解人家寫好的範例,未必有幫助。
就跟 "寫作文"一樣,
拿到題目以後,你不去「想」,只參考人家的範例、現成的作品.....
最後寫出來的東西,也就是人家的東西了(因為你被制約了,腦子被剛剛看的文章給蓋過去了)
以***符號標示的地方,就是我們要寫ASP.NET程式的地方。
第一, *** 會員註冊(新增)。
第二, *** 新增成功以後,發送E-Mail。
第三, 使用者收到E-Mail之後,點選信件裡面的超連結(URL)。
第四, *** 連回我們的網站,啟動會員權益、證明真有此人。
讀者在其他網站註冊會員時,應該也是類似的流程。
您接到E-Mail以後,會發現這個網址後面跟隨了一段很長的亂碼(編碼)。
http://xxx.com/member.aspx?uid=xh3859dskfodfvervnepr
我們可以這樣做,兩種作法 任選其一:
第一, 把您輸入的密碼,透過 MD5或是 SHA1加密以後,放在網址後面送出去。
關於MD5與SHA1加密的部分,微軟有提供現成的程式給我們呼叫。
我的書本下集也有講到(ASP.NET專題實務(II) / 松崗出版)
https://msdn.microsoft.com/zh-tw/library/system.security.cryptography.md5(v=vs.110).aspx
第二, 注意!本範例採用此作法。
會員資料表(db_user)新增兩個欄位備用。
第一個「email_ID欄位」使用「uniqueidentifer」資料型態,
透過SQL指令內建的newid()函式就會自動產生guid。如下圖。
第二個「approved欄位」是Char(1)資料型態,預設值為n(英文小寫)。
代表每一個新增的會員,在未經E-Mail啟動、未確認身份以前,都無法登入系統。
本範例的四個流程,我們先來完成前面兩個步驟的程式:
第一, *** 會員註冊(新增)。
(1-1),您可以透過DetailsView或FormView控制項來作會員新增(註冊),新增一筆記錄是這兩大控制項最強的功能!
(1-2),新增成功之後,前面兩張圖片的設定,資料庫可以幫您產生guid。完全不用自己寫程式就搞定了。
第二, *** 新增成功以後,發送E-Mail。
(2-1),發送E-Mail是一段固定的程式,幾乎不用修改,直接套用即可。可以參閱 MSDN範例
.....未完.....