安装使用 ASP程序整合UCenter 同步登录退出并解决中文登录的问题

[复制链接]
建站高手 发表于 2012-6-18 09:38:47 [安装使用] 显示全部楼层 |阅读模式 上一主题 下一主题
ad广告
ad广告

马上注册,一起探讨正确快速的建站方法

您需要 登录 才可以下载或查看,没有帐号?快速注册

x
本帖最后由 建站高手 于 2012-6-18 09:43 编辑

首先ASP+UC客户端API文档查看:
  1. 用户注册示例 (ASP)Dim register
  2. 'register = uc_user_register("用户名","密码","邮箱","安全提问","问题答案")
  3. register = uc_user_register("admin1","admin888","[email protected]","","")
  4. If register > "0" Then
  5.     response.write "注册成功"
  6. ElseIf register = "-1" Then
  7.     response.write "用户名不合法"
  8. ElseIf register = "-2" Then
  9.     response.write "包含要允许注册的词语"
  10. ElseIf register = "-3" Then
  11.     response.write "用户名已经存在"
  12. ElseIf register = "-4" Then
  13.     response.write "Email 格式有误"
  14. ElseIf register = "-5" Then
  15.     response.write "Email 不允许注册"
  16. ElseIf register = "-6" Then
  17.     response.write "该 Email 已经被注册"
  18. ElseIf register = "-7" Then
  19.     response.write "注册信息填写不全"
  20. Else
  21.     response.write "未定义"
  22. End If


  23. 用户登录示例 (ASP)Dim login
  24. 'login = uc_user_login("用户","密码","是否ID登录","是否验证安全问题","安全问题","问题答案")
  25. login = uc_user_login("admin","5201314","0","0","","")
  26. If login(0) > "0" Then
  27.     response.write "登录成功<br>"
  28.     response.write "用户ID:"&login(0)&"<br>"
  29.     response.write "用户名:"&login(1)&"<br>"
  30.     response.write "用户密码:"&login(2)&"<br>"
  31.     response.write "用户邮箱:"&login(3)&"<br>"
  32.     response.write "是否重命名:"&login(4)&"<br>"
  33. ElseIf login(0) = "-1" Then
  34.     response.write "用户不存在,或者被删除"
  35. ElseIf login(0) = "-2" Then
  36.     response.write "密码错"
  37. ElseIf login(0) = "-3" Then
  38.     response.write "安全提问错"
  39. ElseIf login(0) = "-4" Then
  40.     response.write "用户或密码为空"
  41. Else
  42.     response.write "未定义"
  43. End If

  44. 删除用户

  45. 'response.write uc_user_delete("用户ID")
  46. response.write uc_user_delete(2)

  47. 检查用户名示例 (ASP)Dim cname
  48. 'cname = uc_user_checkname("用户名")
  49. cname = uc_user_checkname("admin")
  50. If cname = "1" Then
  51.     response.write "正确"
  52. ElseIf cname = "-1" Then
  53.     response.write "用户名不合法"
  54. ElseIf cname = "-2" Then
  55.     response.write "包含不允许注册的词语"
  56. ElseIf cname = "-3" Then
  57.     response.write "用户名已经存在"
  58. Else
  59.     response.write "未定义"
  60. End If


  61. 用户登录 后的:
  62. response.write uc_user_synlogin(UID)

  63. 完整的实例:

  64. Dim login
  65. 'login = uc_user_login("用户","密码","是否ID登录","是否验证安全问题","安全问题","问题答案")
  66. login = uc_user_login("admin","5201314","0","0","","")
  67. If login(0) > 0 Then '有此用户才登陆
  68.     response.write uc_user_synlogin(login(0))  '获取同步登录代码
  69. ElseIf login(0) = "-1" Then
  70.     response.write "用户不存在"
  71. ElseIf login(0) = "-2" Then
  72.     response.write "密码错误"
  73. Else
  74.     response.write "未定义"
  75. End If
复制代码
如何安装使用这里就不详细描述了,只说几点遇到的问题,因为添加用户、修改密码我是直接用ASP+MYSQL向数据库添加修改数据,所以不知道这个API对添加用户、修改密码有没有问题,这里详细讲同步登录。

1、通信问题

在UC添加应用时通信密钥要和config.inc.asp里写的一样,编写程序时调用config.inc.asp,同步登录需要在是否同步应用里选择是。

2、中文用户无法登录问题

这里给一个简单的同步登录代码,就命名为login.asp吧!

  1. <!--#include file="config.inc.asp"-->
  2. <%
  3. a=uc_user_login("清竹科技", "******", 0, 0, "", "") '登录返回ARRAY数组,详细函数说明见client.asp
  4. '----------------------
  5. '登录判断这里不详细编写,当作登录成功
  6. response.write uc_user_synlogin(a(0),"******") '得到登录ID,打印结果执行JS同步登录
  7. response.write a(1)
  8. response.end
  9. %>
复制代码
接下来是重点,打开client.asp,CTRL+F搜索Function uc_fopen(url,post),在获取远程页面数据的返回结果我们需要进行处理,把二进制结果进行字符串转换。
原函数:
  1. Function uc_fopen(url,post)
  2. Dim Http
  3. Set Http = Server.CreateObject("Msxml2.ServerXMLHTTP")
  4. With Http
  5. .Open "POST",url,False
  6. .SetRequestHeader "Accept","*/*"
  7. .SetRequestHeader "Accept-Language","zh-cn"
  8. .SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
  9. .SetRequestHeader "User-Agent", Request.ServerVariables("HTTP_USER_AGENT")
  10. .setRequestHeader "Host","119.132.83.166"
  11. .SetRequestHeader "Content-Length",Len(post)
  12. .setRequestHeader "Connection","Close"
  13. .setRequestHeader "Cache-Control","no-cache"
  14. .Send post
  15. uc_fopen = .ResponseText
  16. End With
  17. End Function
复制代码
在本函数下方添加一个二进制转换函数
  1. Function bytes2bstr(vin)
  2. On Error Resume Next
  3. Err.Clear
  4. strreturn = ""
  5. For i = 1 To LenB(vin)
  6. thischarcode = AscB(MidB(vin, i, 1))
  7. If thischarcode < &H80 Then
  8. strreturn = strreturn & Chr(thischarcode)
  9. Else
  10. nextcharcode = AscB(MidB(vin, i + 1, 1))
  11. strreturn = strreturn & Chr(CLng(thischarcode) * &H100 + CInt(nextcharcode))
  12. i = i + 1
  13. End If
  14. Next
  15. bytes2bstr = strreturn
  16. End Function
复制代码
添加后,把原函数里的uc_fopen = .ResponseText换成uc_fopen=bytes2bstr(.responsebody)
修改后的完整代码如下:
  1. '================================================
  2. '函数名: uc_fopen
  3. '作 用: 远程打开URL
  4. '参 数: url : 打开的ur
  5. ' post : 要发送的 POST 数据
  6. '返回值: 取到的字符串
  7. '================================================
  8. Function uc_fopen(url,post)
  9. Dim Http
  10. Set Http = Server.CreateObject("Msxml2.ServerXMLHTTP")
  11. With Http
  12. .Open "POST",url,False
  13. .SetRequestHeader "Accept","*/*"
  14. .SetRequestHeader "Accept-Language","zh-cn"
  15. .SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
  16. .SetRequestHeader "User-Agent", Request.ServerVariables("HTTP_USER_AGENT")
  17. '.setRequestHeader "Host","119.132.83.166"  '这行没用,注视掉
  18. .SetRequestHeader "Content-Length",Len(post)
  19. .setRequestHeader "Connection","Close"
  20. .setRequestHeader "Cache-Control","no-cache"
  21. .Send post
  22. uc_fopen=bytes2bstr(.responsebody)
  23. 'uc_fopen = .ResponseText
  24. End With
  25. End Function
  26. Function bytes2bstr(vin)
  27. On Error Resume Next
  28. Err.Clear
  29. strreturn = ""
  30. For i = 1 To LenB(vin)
  31. thischarcode = AscB(MidB(vin, i, 1))
  32. If thischarcode < &H80 Then
  33. strreturn = strreturn & Chr(thischarcode)
  34. Else
  35. nextcharcode = AscB(MidB(vin, i + 1, 1))
  36. strreturn = strreturn & Chr(CLng(thischarcode) * &H100 + CInt(nextcharcode))
  37. i = i + 1
  38. End If
  39. Next
  40. bytes2bstr = strreturn
  41. End Function
复制代码
返回结果:
  1. <script type="text/javascript" src=http://bbs.qzsys.com/api/uc.php?time=1291717078&code=************************** reload="1"></script>
复制代码
即login.asp里response.write uc_user_synlogin(a(0),"******")打印出来的结果,登录成功!




上一篇:Discuz x2.5积分策略设置和积分规则注意事项
下一篇:Discuz x2.5论坛安装整合许愿天空sky插件

大神点评6

ARCHY明星会员实名认证 发表于 2012-6-18 09:43:44 [安装使用] 显示全部楼层
这个很强大,沙发支持下了
非一般感觉明星会员实名认证 发表于 2012-6-18 13:52:21 [安装使用] 显示全部楼层
  很赞的啊 、
神马都是浮云... ...
幸福一家子 发表于 2012-12-18 15:09:27 [安装使用] 显示全部楼层
高级程序,非常厉害呀
彩印设计 发表于 2013-1-7 10:11:15 [安装使用] 显示全部楼层
非常厉害呀
泥巴路 发表于 2013-3-1 20:36:51 [安装使用] 显示全部楼层
请问有没有asp.net的同步登录代码?
d99d 发表于 2013-6-3 18:04:00 [安装使用] 显示全部楼层
UTF8编码时用不了啊
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

快速回复 返回顶部 返回列表