[會員登入] 透過 E-Mail進行身份認證、啟用會員權利

以***符號標示的地方,就是我們要寫ASP.NET程式的地方。

第一, *** 會員註冊(新增)。
第二, *** 新增成功以後,發送E-Mail。(ASP.NET發送E-Mail)
第三, 使用者收到E-Mail之後,點選信件裡面的超連結(URL)。
第四, *** 連回我們的網站,啟動會員權益、證明真有此人。

這個問題是在論壇上看見的

其實,遇見問題的時候,我會建議初學者先想一下「流程」

      您想怎麼作?需要哪些步驟?

 

一旦「流程」清楚了

      您是哪一步驟不會?.....大家可以給您幫助。

      哪一段程式寫不出來?找不到?.....也比較好解決。

 

直接拆解人家寫好的範例,未必有幫助。

就跟 "寫作文"一樣,

拿到題目以後,你不去「想」,只參考人家的範例、現成的作品.....

最後寫出來的東西,也就是人家的東西了(因為你被制約了,腦子被剛剛看的文章給蓋過去了)

 



 

==== 文章開始 ==================================================================

以***符號標示的地方,就是我們要寫ASP.NET程式的地方。

第一, *** 會員註冊(新增)。

第二, *** 新增成功以後,發送E-Mail。

第三, 使用者收到E-Mail之後,點選信件裡面的超連結(URL)。

第四, *** 連回我們的網站,啟動會員權益、證明真有此人。

第五, *** 第二次發出E-Mail,恭喜對方加入網站 (完成!)

 

讀者在其他網站註冊會員時,應該也是類似的流程。

 

您接到E-Mail以後,會發現這個網址後面跟隨了一段很長的亂碼(編碼)。

http://xxx.com/member.aspx?uid=xh3859dskfodfvervnepr

 

我們可以這樣做,兩種作法  任選其一

第一, 把您輸入的 "帳號" 或是 "E-Mail",透過 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。如下圖。

當SQL Server 200x 新的 uniqueidentifier資料型態,遇見 SqlDataSource

 

第二個「approved欄位」是Char(1)資料型態,預設值為n(英文小寫)。

            代表每一個新增的會員,在未經E-Mail啟動、未確認身份以前,都無法登入系統。

 

 

本範例的四個流程,我們先來完成前面兩個步驟的程式:

第一, *** 會員註冊(新增)。

    (1-1),您可以透過DetailsView或FormView控制項來作會員新增(註冊),新增一筆記錄是這兩大控制項最強的功能!

    (1-2),新增成功之後,前面兩張圖片的設定,資料庫可以幫您產生guid。完全不用自己寫程式就搞定了。

 

第二, *** 新增成功以後,發送E-Mail。

    (2-1),發送E-Mail是一段固定的程式,幾乎不用修改,直接套用即可。可以參閱 MSDN範例

    https://msdn.microsoft.com/zh-tw/library/system.net.mail.mailmessage(v=vs.110).aspx

 

第三, 使用者收到E-Mail之後,點選信件裡面的超連結(URL)。

第四, *** 連回我們的網站,啟動會員權益、證明真有此人。

第五, *** 發出第二封E-Mail,恭喜對方完成註冊,歡迎加入網站。

 

上述流程中,"兩次"發送E-Mail的程式幾乎不用大改,直接套用就能運作。

如果您需要更多功能,微軟MSDN網站上面都能查到。

 

如果您寫的E-Mail程式無法發送訊息,可能有下列的因素:

  • 您的Mail Server沒有在DNS裡面註冊為MX。因為垃圾郵件氾濫,大部分的Mail Server管理員都會拒絕接受來路不明的SMTP Server亂發信件。例如:Mail Server只有IP卻沒有Domain Name,或這台Server只有SMTP(只會發信)卻沒有POP3(沒有收信機制),這種疑似垃圾信件都會被檔下。
  • 您的網路不通,可能MIS人員設定防火牆檔住。
  • Mail Server設定錯誤。您需要參考Windows Server或是Linux書籍來設定,我不是網管高手,所以幫不上忙。

 

*** ASP.NET發送 E-Mail的範例 ***

  • 您也可以參閱「MailDefinition類別」的作法。

[習題]透過 ASP.NET寄信(發信、發Mail),System.Net.Mail.MailDefinition 類別

 

第二個步驟發送的E-Mail,信件內容有一段長長的網址。

使用者點選後就會回到我們網站的 member.aspx這支程式。

可以啟動會員權益、確認此會員真的存在......

例如  http://xxx.com/member.aspx?uid=xh3859dskfodfvervnepr

 

這支程式裡面就可以透過Request[“uid”](如果是VB語法請寫成Request(“uid”))。

一旦確認身份就可以啟動這名會員的權益了,

請把會員資料表(db_user)裡面的「approved」欄位改成 y

 

注意!!撰寫程式時,這部分請多用「參數」寫法,以免不小心中了 SQL Injection(資料隱碼)攻擊

[FAQ] ADO.NET 參數寫法 Parameter(避免SQL Injection資料隱碼攻擊)

 

本範例會用到的所有技巧、資料表的設定、程式碼 --

      在書本(ASP.NET專題實務 / 松崗出版。上下兩集)都會提到。

 

      在課程中,也都會帶您走過一遍。

      課程包含兩種:遠距教學(老師在現場上課)影片教學(事先錄好影片,在家自修)

 

相關文章:

[非程式的問題] 寫(ASP.NET)網頁程式發送電子報?.....事情不是我們想得這麼簡單

 

 

 

我將思想傳授他人, 他人之所得,亦無損於我之所有;

猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson

線上課程,遠距教學 (Web Form 49hr)  https://dotblogs.com.tw/mis2000lab/2016/02/01/aspnet_online_learning_distance_education_VS2015

線上課程,遠距教學 (ASP.NET MVC 75hr)  https://dotblogs.com.tw/mis2000lab/2018/08/14/ASPnet_MVC_Online_Learning_MIS2000Lab

ASP.NET MVC線上課程 第一天 免費看 (5.5小時) 

寫信給我,不要私訊 --  mis2000lab (at) yahoo.com.台灣  或  school (at) mis2000lab.net


ASP.NET遠距教學、線上課程(Web Form + MVC)。 第一天課程, "完整" 試聽。 

................   facebook社團   https://www.facebook.com/mis2000lab   ......................

................  YouTube (ASP.NET) 線上教學影片  https://www.youtube.com/channel/UC6IPPf6tvsNG8zX3u1LddvA/

 

Blog文章 "附的範例" 無法下載,請看 這裡 ...... https://dotblogs.com.tw/mis2000lab/2016/03/14/2008_2015_mis2000lab_sample_download

請看我們的「售後服務」範圍(嚴格認定)

......................................................................................................................................................

...................................................................................................................................................... 

[遠距教學、教學影片] ASP.NET (Web Form) 課程 上線了!MIS2000Lab.主講

事先錄製好的影片,並非上課時側錄!   觀看影片時,有如我「一對一」跟您面對面講課

 

ASP.NET MVC 5 線上教學

累積時數約 75小時...... 第一天(5.5小時)完整內容,"免費"讓您評估