1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96 |
Static
UserTable As
DataTable
'定义一个变量,用于存储用户随机身份ID,以及最后一次活动时间.
Static
ClearTime As
Date
If
UserTable Is
Nothing Then
'创建用于记录登录信息的临时表
ClearTime =
Date.Now()
Dim
dtb As
New
DataTableBuilder("UserInfos")
dtb.AddDef("UserName",
Gettype(String),
16)
dtb.AddDef("UserID",Gettype(String),16)
dtb.AddDef("ActiveTime",Gettype(Date))
UserTable =
dtb.Build(True)
End
If
If
(Date.Now
- ClearTime).TotalMinutes
>= 30 Then
'清除超过30分钟没有操作的登录信息
UserTable.DeleteFor("ActiveTime
< #" &
Date.Now.AddMinutes(-30)
& "#")
ClearTime =
Date.Now()
End
If
Dim
wb As
New
weui
'身份验证
Dim
UserName As
String
Dim
Password As
String
Dim
UserID As
String
If
e.Path
= "logon.htm"
'验证用户名和密码
If e.PostValues.ContainsKey("username")
AndAlso e.PostValues.ContainsKey("password")
Then
Dim
Verified As
Boolean
'用于标记用户是否通过了身份验证
UserName =
e.PostValues("username")
Password =
e.PostValues("password")
If
UserName = "张三"
AndAlso
Password = "888"
Then
'实际使用的时候,请改为从数据库读取用户名和密码进行比较
Verified =
True
ElseIf
Username =
"李四"
AndAlso
Password="999"
Then
Verified =
True
End
If
If
Verified Then
UserID =
Rand.NextString(16)
'生成随机用户ID
UserName =
EncryptText(UserName,"123","123")
'将用户名加密.
Dim
dr As
DataRow =
UserTable.Find("UserName
= '" &
UserName &
"'")
If
dr IsNot
Nothing Then
'如果是重复登录,删除以前的登录信息
dr.Delete()
End
If
dr =
UserTable.AddNew()
dr("UserName")
= UserName
dr("UserID")
= UserId
dr("ActiveTime")
= Date.Now
'记录登录时间
wb.AppendCookie("username",UserName)
'将用户名和UserID写入cookie
wb.AppendCookie("userid",UserID)
wb.InsertHTML("<meta
http-equiv='Refresh' content='0; url=/default.htm'>")
'直接跳转到首页
e.WriteString(wb.Build)
'生成网页
Return
'必须的
End If
End
If
Else
'其它页面从Cookie提取登录信息进行验证
UserName =
e.Cookies("username")
'从cookie中获取用户名
UserID =
e.Cookies("userid")
'从cookie中获取
随机ID
Dim
dr As
DataRow = UserTable.Find("UserName
= '" &
UserName &
"'")
If dr
IsNot Nothing
AndAlso dr("UserID")
= UserID Then
'如果通过验证,更新活动时候,继续访问其它页面.
dr("ActiveTime")
= Date.Now
'更新活动时间
Else
'如果验证失败
wb.InsertHTML("<meta
http-equiv='Refresh' content='0; url=/logon.htm'>")
'那么直接跳转到登录页面
e.WriteString(wb.Build)
'生成网页
Return
'必须的
End
If
End
If
'开始生成网页
Select
Case e.path
Case
"logon.htm"
'登录页面
wb.AddPageTitle("","pageheader","销售系统","由湛江辉迅基于Foxtable开发")
If e.PostValues.ContainsKey("username")
AndAlso e.PostValues.ContainsKey("password")
Then
'判断是否是验证失败后的重新登录
wb.AddTopTips("","toptip1","用户名或密码错误!").msec
= 2000
'如果用户通过登录按钮访问,则给用户一个2秒的提示.
End
If
wb.AddForm("","form1","logon.htm")
With
wb.AddInputGroup("form1","ipg1")
.AddInput("username","户名","text")
.AddInput("password","密码","password")
End
With
With
wb.AddButtonGroup("form1","btg1",True)
.Add("btn1",
"登录",
"submit")
End
With
Case
"exit.htm"
'退出登录
wb.DeleteCookie("username")
'清除cookie中原来的用户名和UserID
wb.DeleteCookie("UserID")
wb.InsertHTML("<meta
http-equiv='Refresh' content='0; url=/logon.htm'>")
'然后直接跳转到登录页面
Case "",
"default.htm"
'首页
wb.AddPageTitle("","pageheader","销售系统","由湛江辉迅基于Foxtable开发")
With
wb.AddGrid("","g1")
.Add("c1","增加订单",
"./images/button.png").Attribute
= "onclick='javascript:alert(""你单击了我!"")'"
.Add("c2","客户管理",
"./images/cell.png",
"http://www.foxtable.com")
.Add("c3","销售统计",
"./images/toast.png",
"http://www.foxtable.com")
.Add("c4","Dialog",
"./images/dialog.png",
"http://www.foxtable.com")
.Add("c5","Progress",
"./images/progress.png",
"http://www.foxtable.com")
.Add("c6","Msg",
"./images/msg.png",
"http://www.foxtable.com")
.Add("c7","Article",
"./images/article.png",
"http://www.foxtable.com")
.Add("c8","ActionSheet",
"./images/actionSheet.png",
"http://www.foxtable.com")
.Add("c9","Icons",
"./images/icons.png",
"http://www.foxtable.com")
.Add("c10","Panel",
"./images/panel.png",
"http://www.foxtable.com")
.Add("c11","Tab",
"./images/tab.png",
"http://www.foxtable.com")
.Add("c12","退出",
"./images/exit.png",
"exit.htm")
'退出登录
End
With
End
Select
e.WriteString(wb.Build)
'生成网页 |