寄密碼至會員信箱功能編寫


Tek 發表



忘記密碼是常發生的問題...為了解決了這一個問題,把密碼寄回到該會員的信箱變成了一種貼心且有效率的服務之一•

[ASP]寄密碼至會員信箱之功能編寫

→(測試環境)必需品及用途說明
這些是基本的測試環境,程式編寫者可以不需要完全遵守以下的條件• 只要確定您的電腦可以運行
SMTP服務、跑ASP跟支援Access資料庫即可•
-[Microsoft Access (*.mdb)]儲存會員資料,包括帳號、密碼,以及郵件地址
-[Simple Mail Transfer Protocol Service]運用SMTP服務寄郵件
-[Internet Information Service]運用IIS,運作ASP網頁
-或者其他作業系統

→教學編寫到的部份
-會員註冊的網頁 (registration.asp)
-處理會員註冊的網頁 (process_reg.asp)
-忘記密碼反寄給該會員的功能介面 (forgot.asp)
-處理密碼反寄的網頁 (deliver.asp)

→MDB 資料庫設計
-File name: document.mdb
-Table name: data
-columns: id(autonumber), account(text), password(text), email(memo)

→程式簡化介紹
這是一個簡單的會員服務設計•當一個註冊的會員忘記密碼時,可以在利用反寄的功能,在會員給予
正常、符合的帳號後直接寄回到這一個會員的信箱• 這一種設計,跟其他密碼提示的服務功能比起
,對會員而言較安全• 當然,密碼設的過簡單的安全例外•

→第一頁 (registration.asp)
註冊的網頁可以利用HTML Coding就可以了,只是個人習慣把自己做的網頁都為*.ASP頁•

<html>
<head>
<title>註冊畫面</title>
</head>
<body bgcolor="white">
<form method="post" action="process_reg.asp">
<font color="black" size="2">
您的帳號 <input type="text" name="account" value=""><br>
您的密碼 <input type="text" name="password" value=""><br>
密碼確認 <input type="text" name="verification" value=""><br>
您的郵件 <input type="text" name="email" value=""><br>
<input type="submit" value="確定">
</font>
</form>
</body>
</html>

→第二頁 (process_reg.asp)
處理註冊頁所給予的資料,加入到資料庫去•這一頁的功能也包括了密碼檢查、空白檢查、
帳號重覆檢查•

<%
''''''''''''''''''''''''
'coded by Tek
'cx@ms74.url.com.tw
'purpose: add new user
''''''''''''''''''''''''
Dim rq, rs
Dim info
Dim objconn, sql
Set rq = Request
Set rs = Response
info=Array(rq.form("account"),rq.form("password"),rq.form("verification"),rq.form("email"))
'the first identification
If info(0) = "" then
rs.write("需要帳號")
rs.end
Elseif info(1) = "" then
rs.write("需要密碼")
rs.end
Elseif info(2) = "" then
rs.write("需要確認密碼")
rs.end
Elseif info(3) = "" then
rs.write("需要電子郵件")
rs.end
End If
'the second identification
If info(2) <> info(1) Then
rs.write("您所輸入的密碼跟確認的密碼不符合")
rs.end
End If
Set objconn = Server.Createobject("adodb.connection")
Set sql = Server.Createobject("adodb.recordset")
objconn.open "Driver={Microsoft Access Driver (*.mdb)};dbq="&server.mappath("document.mdb")
'the final identification
sql.open "select *from [data] where account='"& Trim(info(0)) &"'",objconn,1,3
If sql.eof = True Then
sql.Addnew
sql("account") = trim(info(0))
sql("password") = trim(info(1))
sql("email") = trim(info(3))
sql.update
sql.update
set sql = Nothing
Set objconn = Nothing
rs.write("帳號新增成功!<br>")
rs.write("您的帳號為:" & info(0) & "<br>")
rs.write("<br>當您忘記密碼時,<a href='forgot.asp'>請至此頁</a>讓程式寄密碼至信箱" & info(3))
Else
rs.write("抱歉,此帳號已經存在")
rs.end
End If
%>

→第三頁 (forgot.asp)
跟註冊頁有點類似,這一頁只是簡單的HTML Coding•

<html>
<head>
<title>密碼查詢(反寄)</title>
</head>
<body bgcolor="white">
<form method="post" action="deliver.asp">
<font color="black" size="2">
...請輸入您的帳號<br>
<input type="text" value="" name="my_account" size="20">
<input type="submit" value="確定">
</font>
</form>
</body>
</html>

→第四頁 (deliver.asp)
寄送密碼的網頁

<%
''''''''''''''''''''''''
'coded by Tek
'cx@ms74.url.com.tw
'purpose: add new user
''''''''''''''''''''''''
Dim account 'invoke the account
Dim objconn, rs
Dim mailing
account = Request.form("my_account")
If account = "" then
Response.Write("需要輸入帳號程式才可以寄出密碼")
Response.End
End If
Set objconn = Server.CreateObject("adodb.connection")
Set rs = Server.CreateObject("adodb.recordset")
objconn.open "driver={Microsoft Access Driver (*.mdb)};dbq="& server.mappath("document.mdb")
rs.open "select *from [data] where account = '"& trim(account) &"'",objconn,1,3
If rs.eof = TRUE then
Response.Write("帳號不存在")
Response.End
Else
Set mailing = Server.CreateObject("cdonts.newmail")
mailing.from = "ASP範本密碼回寄"
mailing.to = rs("email")
mailing.subject = "您在本站的會員密碼 by Tek"
mailing.body = "您的密碼為:" & rs("password")
mailing.importance = 2
mailing.send
Set mailing = Nothing
Response.Write("您的密碼已經寄到信箱" & rs("email"))
Response.End
End If
%>

註:
此教學的目地是給網友一個服務設計上的參考,如果您需要知道如何運用ASP寄信的方法(教學),請參考
之前Tek寫(或者是網路上找)的相關文章即可•
另外,當您的系統寄信失敗時,將會有記錄在您的電腦中!

最後更新日期: 8/26/2002 8:33:48 AM