以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]open qq 连接问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=88992)

--  作者:viking
--  发布时间:2016/8/13 2:03:00
--  [求助]open qq 连接问题
自己按照帮助测试了一下,出现以下问题:
使用自定义用户
客户端和服务端都在本机
ip:127.0.0.1
ping ip 可以收到数据
已加入mes测试,可以收到登陆用户
已启动server

报错:
.NET Framework 版本:2.0.50727.5485
Foxtable 版本:2016.7.23.1
错误所在事件:项目,Server
详细错误信息:
索引超出了数组界限。


UserLogging中代码和帮助一样


Dim pts() As String = e.UserName.Split(".")

MessageBox.Show(e.UserName)

Dim dr1 As DataRow

dr1 = DataTables("Users").Find("Group = \'" & pts(0) & "\' And Name = \'" & pts(1) & "\'")

If dr1 Is Nothing  Then \'判断此用户不存在

    e.Message  = "用户名错误!" \'返回给登录者的提示信息

    Return

End If

If dr1("Password") <> e.Password Then \'如果密码错误

    e.Message  = "登录密码错误!" \'返回给登录者的提示信息

    Return

End If

e.Success = True \'允许用户登录



求帮助!!!谢谢

[此贴子已经被作者于2016/8/13 16:45:26编辑过]

--  作者:cbt
--  发布时间:2016/8/13 7:53:00
--  

索引超出了数组界限 这个提示,你试试

 

pts.Length  看看这个,超出了索引,

 

 

Dim pts() As String = e.UserName.Split(".")

MessageBox.Show(e.UserName)

if pts.length <2 then \'判断长度

return

end if

Dim dr1 As DataRow

dr1 = DataTables("Users").Find("Group = \'" & pts(0) & "\' And Name = \'" & pts(1) & "\'")

If dr1 Is Nothing Then \'判断此用户不存在

e.Message = "用户名错误!" \'返回给登录者的提示信息

Return

End If

If dr1("Password") <> e.Password Then \'如果密码错误

e.Message = "登录密码错误!" \'返回给登录者的提示信息

Return

End If

e.Success = True \'允许用户登录


--  作者:viking
--  发布时间:2016/8/13 16:48:00
--  
不报错了,但是还是登录失败:
规定时间内未获服务器响应!

这个pts.length 怎么会小于2?

[此贴子已经被作者于2016/8/13 16:51:41编辑过]

--  作者:Hyphen
--  发布时间:2016/8/13 17:01:00
--  
客户端登录代码看看

http://www.foxtable.com/webhelp/scr/2972.htm

--  作者:viking
--  发布时间:2016/8/13 17:05:00
--  
登陆按钮部分代码
全局代码赋值
_UserTname = dr("Tname")
_UserRoles = dr("Roles")
_UserGsbm = dr("Gsbm")
_Userpassword = dr("password")


\'以下为实验openQQ测试,需要修改
QQClient.ServerIP = "127.0.0.1"
QQClient.ServerPort = 52177
QQClient.UserName = _UserName
QQClient.Password = _Userpassword
If QQClient.Start() = True
    Dim msg As String =  "恭喜,OpenQQ登录成功!"
    If QQClient.ServerMessage > "" Then
        msg = msg & QQClient.ServerMessage
    End If
    PopMessage(msg,"提示",PopiconEnum.Infomation,5)
Else
    PopMessage("QQClient登录失败,原因:" & vbcrlf & QQClient.ServerMessage,"提示",PopiconEnum.Error,5)
End If
\'以上为实验openQQ测试,需要修改
[此贴子已经被作者于2016/8/13 17:06:09编辑过]

--  作者:cbt
--  发布时间:2016/8/13 21:25:00
--  

它默认的是

QQClient.UserName = e.Form.Controls("cmbDepartment").Value & "." & e.Form.Controls("txtUserName").Value \'指定登录用户名

用. 来链接 部门 和 登录名,

所以,你那边没有部门,需要修改一下,

 

实在不行,就上传实例

[此贴子已经被作者于2016/8/13 21:39:37编辑过]

--  作者:大红袍
--  发布时间:2016/8/14 12:34:00
--  

改一改服务器端的登录代码

 

 

MessageBox.Show(e.UserName)

Dim dr1 As DataRow

dr1 = DataTables("Users").Find("Name = \'" & e.UserName & "\'")

If dr1 Is Nothing  Then \'判断此用户不存在

    e.Message  = "用户名错误!" \'返回给登录者的提示信息

    Return

End If

If dr1("Password") <> e.Password Then \'如果密码错误

    e.Message  = "登录密码错误!" \'返回给登录者的提示信息

    Return

End If


e.Success = True \'允许用户登录


--  作者:viking
--  发布时间:2016/8/14 21:50:00
--  
规定时间内未获得服务器响应!
不报错了,明白报错的原因了,要求服务器查找对应的Group造成的!
但还是没有响应。。。。
[此贴子已经被作者于2016/8/14 21:56:28编辑过]

--  作者:viking
--  发布时间:2016/8/14 22:34:00
--  
问题解决了,代码后面没有清除干净,导致与运行其他代码造成的,删除后恢复正常!可以登录了