
期末專題DEMO
功能說明
會員->註冊、管理、設權限角色、鎖定帳號、連結帳號(E-Mail)、實作交易處理(同時下很多SQL,確保資料一致性)
產品->分類、內容頁面、設定未來價格、搜尋產品、加入到購物車的特效
資訊安全->驗證碼、輸入錯誤鎖定(註冊的驗證碼)、錯誤頁面顯示(網站預設的)、登入時防止SQL Injection攻擊
購物->購買資訊自動輸入、可依照會員等級給予折扣、可設定取貨、付款方式
系統->設定參數
系統參數
| 中文名稱 |
變數名稱 |
值 |
| 網站名稱 |
hostname |
無尾熊購物網5 |
| 網站Logo檔名 |
logoUrl |
logo.png |
| 圖片資料夾位址 |
imageFolderUrl |
~/images/ |
| 啟用網站維護 |
enableMaintenance |
False |
| 網站維護公告 |
maintenanceNotice |
網站正在維護,請稍後再來。 |
| 啟用交易程序 |
enableTransactions |
True |
| 交易暫停公告 |
transactionsNotice |
本系統交易暫停,請晚點再試。 |
| 網站首頁位址 |
defaultUrl |
~/ |
| 註冊嘗試次數 |
regTryTimes |
3 |
| 啟用註冊嘗試 |
enableRegTry |
True |
| 鎖定註冊嘗試失敗者幾分(單位:分) |
lockFailRegTryTime |
30 |
| 登入嘗試次數 |
loginTryTimes |
3 |
| 最大站上時間 |
sessionTimeOut |
30 |
| 訪問人數 |
visits |
72 |
| 產品沒有圖像 |
NoProductImg |
productNoImage.png |
可以自由停止/開放 網站系統、交易...等
作法講解
交易處理
Dim connection As New OleDb.OleDbConnection(SystemSetting.DbConnStr.ConnectionString)
connection.Open()
Dim Transaction As OleDb.OleDbTransaction = connection.BeginTransaction '開始交易程序,不能平行處理(同一次只能進行一次Transaction
Try
Application.Lock()
Dim command As New OleDb.OleDbCommand(" INSERT INTO 人員 ( 密碼, 姓名, 性別, 生日, 手機號碼, 室內電話, 身份證字號 ) " & _
" VALUES ( """ & Session("pw") & """," & _
"""" & NameTextBox.Text & """," & _
"" & SexRadioButtonList.SelectedValue & "," & _
"CDate(""" & BirthdayTextBox.Text & """)," & _
"""" & CellPhoneTextBox.Text & """," & _
"""" & HomePhoneTextBox.Text & """," & _
"""" & IdentificationCardNumTextBox.Text & """);", connection)
command.Transaction = Transaction
Dim rowNum As Byte = command.ExecuteNonQuery '前面要設定command.Transaction = Transaction
If rowNum <> 1 Then Throw New Exception '如果沒有新增成功,則丟出一個例外
'1[查詢]新增的人員id
command.CommandText = " SELECT 人員.id FROM(人員) WHERE (((人員.身份證字號)=""" & _
IdentificationCardNumTextBox.Text & """));"
Dim newUserId = command.ExecuteScalar
'2[新增]E-Mail位址
command.CommandText = " INSERT INTO 電子郵件 (人員id, 電子郵件) " & _
" VALUES (" & newUserId & "," & _
"""" & EMailTextBox.Text & """);"
'3[查詢]電子郵件id
rowNum = command.ExecuteScalar '執行
command.CommandText = " SELECT id " & _
" FROM 電子郵件 " & _
" WHERE 人員id=" & newUserId & " AND 電子郵件='" & EMailTextBox.Text & "';"
Dim newEmailId = command.ExecuteScalar '執行
'4[新增]角色對應人
command.CommandText = " INSERT INTO 人員_角色 (人員id) " & _
" VALUES (" & newUserId & ");"
rowNum = command.ExecuteNonQuery '執行
'5[更新]人員的主要電子郵件id
command.CommandText = " UPDATE 人員 " & _
" SET 人員.主要郵件id = " & newEmailId & _
" WHERE 人員.id=" & newUserId & ";"
rowNum = command.ExecuteNonQuery '執行
Transaction.Commit() '確認這次的交易
resultLabel.Text = "恭喜!您已完成註冊"
Application("memberCount") += 1
'Dim sendResult As Boolean = sendEMail(EMailTextBox.Text, Session("pw"), NameTextBox.Text, Application(HeadTag & "hostname"))
Catch ex As Exception
Transaction.Rollback() '回搠這次的交易
resultLabel.Text = "註冊失敗,請洽管理員"
End Try
SystemSetting.refreshApplication(Application, "memberCount")
Application.UnLock()
End If
系統設定
網站啟動時,會從資料庫中讀取系統參數 資料表,然後,將這些參數寫入Application('sys_變數名稱')中,當網站名稱一改,所有相關使用到網站名稱的物件就會跟著改。
範例檔案
近期迴響