前段时间应一客户要求,将iChat与互动力量社区同步数据..
实现的功能:
- 社区注册,同步注册聊天室用户及密码。
- 社区登陆,同步聊天室密码,用户不存在则新增用户。
- 退出社区,除了以在线分钟数转为经验值存入社区用户经验值,另外为聊天室用户增加等值的积分。
具体修改方法:
一、打开社区配置文件:\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),将其删除,或者使用单引号注释掉.
(解释:删除原有退出警告框)
完毕..有问题请在客户平台提出..