以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 手机端验证登陆的问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=107045) |
-- 作者:rjh4078 -- 发布时间:2017/9/20 16:05:00 -- 手机端验证登陆的问题 Dim zh As String = e.Cookies("zh") \'从cookie中获取用户名 Dim bh As String = e.Cookies("bh") Dim mm As String = e.Cookies("mm") \'从cookie中获取用户密码 If e.Path = "logon.htm" \'如果是通过登录页面访问,从PostValues即可中提取用户名和密码 If e.PostValues.ContainsKey("bh") AndAlso e.PostValues.ContainsKey("mm") Then bh = e.PostValues("bh") mm = e.PostValues("mm") ‘’Dim tr As DataRow=DataTables("人员表").sqlfind("编号=\'" & bh & "\' and 启用=1 and 密码=\'" & EncryptText(mm,"e5","ff") & "\'" ) ‘’If tr IsNot Nothing Then ‘’ Verified = True ‘’ zh=tr("姓名") ‘’End If End If End If Dim tr As DataRow=DataTables("人员表").sqlfind("编号=\'" & bh & "\' and 启用=1 and 密码=\'" & EncryptText(mm,"e5","ff") & "\'" ) If tr IsNot Nothing Then Verified = True zh=tr("姓名") End If 放到蓝色部分 提示: .NET Framework 版本:2.0.50727.8794 Foxtable 版本:2017.8.19.1 错误所在事件:项目,HttpRequest 详细错误信息: String 引用没有设置为 String 的实例。 参数名: s 用messbox弹了一下bh mm是空值 我把身份验证判断放到红色部分 无法验证跳转 但bh mm有数据 |
-- 作者:有点甜 -- 发布时间:2017/9/20 16:17:00 -- 弹出,看看数据是什么
msgbox("编号=\'" & bh & "\' and 启用=1 and 密码=\'" & EncryptText(mm,"e5","ff") & "\'")
在你的sql数据库那里执行sql语句查找数据
Select * from 人员表 where 条件 |
-- 作者:rjh4078 -- 发布时间:2017/9/20 16:59:00 -- 现在的问题是 我把验证代码放到红色部分,能够验证 但是不能跳转default.htm 一直在登录页来回循环 |
-- 作者:rjh4078 -- 发布时间:2017/9/20 17:04:00 -- Dim zh As String = e.Cookies("zh") \'从cookie中获取用户名 Dim bh As String = e.Cookies("bh") Dim mm As String = e.Cookies("mm") \'从cookie中获取用户密码 If e.Path = "logon.htm" \'如果是通过登录页面访问,从PostValues即可中提取用户名和密码 If e.PostValues.ContainsKey("bh") AndAlso e.PostValues.ContainsKey("mm") Then bh = e.PostValues("bh") mm = e.PostValues("mm") \'\' MessageBox.show("编号=\'" & bh & "\' and 启用=1 and 密码=\'" & EncryptText(mm,"e5","ff") & "\'") Dim tr As DataRow=DataTables("人员表").sqlfind("编号=\'" & bh & "\' and 启用=1 and 密码=\'" & EncryptText(mm,"a5","erp") & "\'" ) If tr IsNot Nothing Then Verified = True MessageBox.show("2") zh=tr("姓名") End If \' End If End If If Verified AndAlso e.Path = "logon.htm" Then \'如果用户访问的是登录页,且身份验证成功 wb.AppendCookie("bh",bh) \'将用户名和密码写入cookie wb.AppendCookie("mm",mm) wb.InsertHTML("<meta http-equiv=\'Refresh\' c>") \'直接跳转到首页 e.WriteString(wb.Build) \'生成网页 Return \'必须的 ElseIf Verified = False AndAlso e.Path <> "logon.htm" Then \'如果用户身份验证失败,且访问的不是登录页面 MessageBox.show("1") wb.InsertHTML("<meta http-equiv=\'Refresh\' c>") \'那么直接跳转到登录页面 e.WriteString(wb.Build) \'生成网页 Return \'必须的 End If 先弹出2 再弹出1 有点搞不懂
|
-- 作者:有点蓝 -- 发布时间:2017/9/20 17:31:00 -- 代码逻辑不正确,按照帮助做:http://www.foxtable.com/mobilehelp/scr/0138.htm |
-- 作者:rjh4078 -- 发布时间:2017/9/20 17:34:00 -- 我就是按照帮助来做的 只是把相关控件名称和身份验证那部分代码做了修改 现在是先弹出2 然后弹出 false default.htm
Dim Verified As Boolean \'用于标记用户是否通过了身份验证 Dim zh As String = e.Cookies("zh") \'从cookie中获取用户名 Dim bh As String = e.Cookies("bh") Dim mm As String = e.Cookies("mm") \'从cookie中获取用户密码 If e.Path = "logon.htm" \'如果是通过登录页面访问,从PostValues即可中提取用户名和密码 If e.PostValues.ContainsKey("bh") AndAlso e.PostValues.ContainsKey("mm") Then bh = e.PostValues("bh") mm = e.PostValues("mm") \' End If End If If e.PostValues("bh")<>"" AndAlso e.PostValues("mm")<>"" Then Dim tr As DataRow=DataTables("人员表").sqlfind("编号=\'" & e.PostValues("bh") & "\' and 启用=1 and 密码=\'" & EncryptText(e.PostValues("mm"),"a5","erp") & "\'" ) If tr IsNot Nothing Then Verified = True zh=tr("姓名") MessageBox.show("2") End If End If If Verified AndAlso e.Path = "logon.htm" Then \'如果用户访问的是登录页,且身份验证成功 wb.AppendCookie("bh",bh) \'将用户名和密码写入cookie wb.AppendCookie("mm",mm) wb.InsertHTML("<meta http-equiv=\'Refresh\' c>") \'直接跳转到首页 e.WriteString(wb.Build) \'生成网页 Return \'必须的 ElseIf Verified = False AndAlso e.Path <> "logon.htm" Then \'如果用户身份验证失败,且访问的不是登录页面 MessageBox.show( Verified & e.path) wb.InsertHTML("<meta http-equiv=\'Refresh\' c>") \'那么直接跳转到登录页面 e.WriteString(wb.Build) \'生成网页 Return \'必须的 End If |
-- 作者:有点蓝 -- 发布时间:2017/9/20 17:54:00 -- 弹出编号和密码看看 Dim Verified As Boolean \'用于标记用户是否通过了身份验证 Dim zh As String = e.Cookies("zh") \'从cookie中获取用户名 Dim bh As String = e.Cookies("bh") Dim mm As String = e.Cookies("mm") \'从cookie中获取用户密码 If e.Path = "logon.htm" \'如果是通过登录页面访问,从PostValues即可中提取用户名和密码 If e.PostValues.ContainsKey("bh") AndAlso e.PostValues.ContainsKey("mm") Then bh = e.PostValues("bh") mm = e.PostValues("mm") \' End If End If msgbox(bh) msgbox(mm) If bh > "" AndAlso mm > "" Then Dim tr As DataRow=DataTables("人员表").sqlfind("编号=\'" & bh & "\' and 启用=1 and 密码=\'" & EncryptText(mm,"a5","erp") & "\'" ) If tr IsNot Nothing Then Verified = True zh=tr("姓名") MessageBox.show("2") End If End If |
-- 作者:rjh4078 -- 发布时间:2017/9/20 18:27:00 -- 可以了 真是神奇 如果读取到cookies把用户名自动填到用户名栏目怎么写?
|
-- 作者:rjh4078 -- 发布时间:2017/9/20 19:21:00 -- Dim Verified As Boolean \'用于标记用户是否通过了身份验证 Dim zh As String = e.Cookies("zh") \'从cookie中获取用户名 Dim bh As String = e.Cookies("bh") Dim mm As String = e.Cookies("mm") \'从cookie中获取用户密码 If e.Path = "logon.htm" \'如果是通过登录页面访问,从PostValues即可中提取用户名和密码 If e.PostValues.ContainsKey("bh") AndAlso e.PostValues.ContainsKey("mm") Then bh = e.PostValues("bh") mm = e.PostValues("mm") \' End If End If MessageBox.show(mm) If bh<>"" AndAlso mm<>"" Then Dim tr As DataRow=DataTables("人员表").sqlfind("编号=\'" & e.PostValues("bh") & "\' and 启用=1 and 密码=\'" & mm & "\'" ) If tr IsNot Nothing Then Verified = True zh=tr("姓名") End If End If If Verified AndAlso e.Path = "logon.htm" Then \'如果用户访问的是登录页,且身份验证成功 wb.AppendCookie("bh",bh) \'将用户名和密码写入cookie wb.AppendCookie("mm",EncryptText(e.PostValues("mm"),"a5","erp")) wb.InsertHTML("<meta http-equiv=\'Refresh\' c>") \'直接跳转到首页 e.WriteString(wb.Build) \'生成网页 Return \'必须的 ElseIf Verified = False AndAlso e.Path <> "logon.htm" Then \'如果用户身份验证失败,且访问的不是登录页面 MessageBox.show( Verified & e.path) wb.InsertHTML("<meta http-equiv=\'Refresh\' c>") \'那么直接跳转到登录页面 e.WriteString(wb.Build) \'生成网页 Return \'必须的 End If 我在将密码写入cookies的时候进行了加密 现在遇到一个问题 如果密码修改了 程序会一直以本地的密码来验证 怎么来改优先级呢
|
-- 作者:有点甜 -- 发布时间:2017/9/20 22:03:00 -- 以下是引用rjh4078在2017/9/20 19:21:00的发言:
我在将密码写入cookies的时候进行了加密 现在遇到一个问题 如果密码修改了 程序会一直以本地的密码来验证 怎么来改优先级呢
你修改密码以后,理应重新登陆一次的。现在的网站都是这样做的。 |