前段时间应一客户要求,将iChat与互动力量社区同步数据..

实现的功能:

  1. 社区注册,同步注册聊天室用户及密码。
  2. 社区登陆,同步聊天室密码,用户不存在则新增用户。
  3. 退出社区,除了以在线分钟数转为经验值存入社区用户经验值,另外为聊天室用户增加等值的积分。

具体修改方法:

一、打开社区配置文件:\user\inc\community_conn.asp
增加以下内容:
(解释:
聊天室初始化;数据库连接串过程;检测聊天室用户是否存在,存在则修改密码,不存在则增加该用户过程;用户退出社区,聊天室用户增加等值的积分过程)

'聊天室同步初始化. by yeyuan(QQ8572515) 20090814
Dim UserCredit,UserLevel
UserCredit=100 '默认积分
UserLevel=1 '默认级别


Function Openconn()
 set connChat=Server.CreateObject("ADODB.connection")
 connstr = "Provider=SQLOLEDB.1;Data Source=(local);User ID=ClubiChat;Password=ClubiChatClubiChat;Initial Catalog=ClubiChat;Persist Security Info=True"
 ConnChat.Open ConnStr

End Function

Function LoginChatUserCheck(UserName,UserPass) '检测聊天室用户是否存在,存在则修改密码,不存在则增加该用户. by yeyuan(QQ8572515) 20090814
Call Openconn()
 Set UserInfo=connChat.execute("Select UserPassword From [UserInfo] Where UserName='"&username&"'")
 If UserInfo.Eof Then
  connChat.execute("Insert Into [UserInfo](UserName,UserPassword,UserSex,UserCredit,UserLevel,UserEnable)Values('"&UserName&"','"&UserPass&"',2,"&UserCredit&","&UserLevel&",1)")
 Else
  connChat.execute("Update [UserInfo] Set UserPassword='"&UserPass&"' Where UserName='"&username&"'")
 End If
 UserInfo.Close
 Set UserInfo=Nothing
End Function

Function LogoutChatCreditSave(AddCredit) '用户退出社区,增加等量经验值的积分,存入聊天室用户积分. by yeyuan(QQ8572515) 20090814
Call Openconn()
 If Session("SnSnName")<>"" Then
  username=Session("SnSnName")
  connChat.execute("Update [UserInfo] Set UserCredit=UserCredit+"&AddCredit&" Where UserName='"&username&"'")
  LogoutChatCreditSave=1
 Else
  LogoutChatCreditSave=0
 End If
 
End Function

 二、打开\user\script\login\verify.asp
24行左右,
username=request("username")下面增加以下内容:
(解释:
生成用户名和密码session,增加两个session一方面是因为在社区里面增加聊天室即时登陆窗口,用户登陆社区后,只需要选择房间,点击登陆即可登陆聊天室,同时在退出登陆时为聊天室用户增加积分时也会用到,退出登陆后自动清空两个session)

 Session("SnSnPass")=request("password")
 Session("SnSnName")=request("username")

三、打开\user\script\login\verify.asp
76行左右,case 1 '登陆成功 下面增加以下内容:
(解释:
插入判断用户是否存在,存在则修改密码,不存在则新增该用户方法)

Call LoginChatUserCheck(username,password)

四、打开\user\script\reg\get_reg.asp
670行左右,以下代码中间增加内容,
(解释:
插入判断用户是否存在,存在则修改密码,不存在则新增该用户方法)

after_reg_auto_login_url = "../login/verify.asp?community_id=" + cstr(community_id) + "&username=" + server.URLEncode(username) + "&password=" + server.URLEncode(password)

LoginChatUserCheck(username,password) '增加此段代码

if  redirect_url=""  then

五、打开\user\script\logout\logout.asp
39行左右,backto_url=cmd("@backto_url")下面增加以下代码:
(解释:若session存在,则用户退出社区,增加等量经验值的积分,存入聊天室用户积分,并返回成功,否则返回失败,将结果传入ChatCreditSaveState
)

ChatCreditSaveState=LogoutChatCreditSave(add_point)

46行左右,session.abandon下面增加以下代码:
(解释:清空session,判断聊天室用户积分是否增加功能,并返回结果。
)

 Session("SnSnPass")=""
 Session("SnSnName")=""
If ChatCreditSaveState=1 Then '保存聊天室积分成功
 call popup_message("您本次登陆社区共停留了"&cstr(stay_min_fromlogin)&"分钟,共获得"&cstr(add_point_fromlogin)&"点经验值和"&get_global_setting("money_name")&"$"&cstr(add_money_fromlogin)&"的奖励!(另外已为您聊天室用户增加"&cstr(add_point)&"积分,请查收(聊天室在线则需存点方可生效)!)",backto_url,4)
Else
 call popup_message("您本次登陆社区共停留了"&cstr(stay_min_fromlogin)&"分钟,共获得"&cstr(add_point_fromlogin)&"点经验值和"&get_global_setting("money_name")&"$"&cstr(add_money_fromlogin)&"的奖励!(由于系统原因,识别不到您在聊天室的用户资料,本次退出无法将经验值存入您聊天室积分,请见谅!)",backto_url,4)
End If

49行左右,call popup_message("您本次登陆社区共停留了"&cstr(stay_min_fromlogin)&"分钟,共获得"&cstr(add_point_fromlogin)&"点经验值和"&get_global_setting("money_name")&"$"&cstr(add_money_fromlogin)&"的奖励!",backto_url,4),将其删除,或者使用单引号注释掉.
(解释:删除原有退出警告框
)

 

完毕..有问题请在客户平台提出..