论坛风格切换切换到宽版
  • 20069阅读
  • 83回复

[原创]关于webvod5不扣点的一些说明及修改! [复制链接]

上一主题 下一主题
离线snzyj
 

发帖
357
金钱
23641331
威望
8
贡献值
888
只看楼主 倒序阅读 使用道具 0 发表于: 2006-02-24

webvod5破解版在使用过程中发现计费功能有bug,不会扣点。估计是网页代码部分有问题。经过一段时间分析后,发现确实是代码的问题。由于偶基本不懂asp,所以只能蒙着改了。经过一些小改动后,可以按点数计费了。在此给大家说明一下解决方法。


如果有asp高手,还希望能更好的改一下,把其它计费方式也改全。


webvod安装好后,在\Program Files\Viewgood\WebVOD\WebMedia\oemui下有个player.asp,这个文件是计费的。


下面我贴出了文件部分原代码,做一简单分析。源文件虽然比较长,但计费功能主要用到了几个函数,分别是function CheckPoint(iGameID, iCurrentPoint),function CheckMonth(iUserID, iUnitValue),function CheckFlux(iGameID, iCurrentFlux),function CheckHour(iGameID, iCurrentHour)在原文件中用其它颜色加粗显示了。


…………省略若干句


function CheckPoint(iGameID, iCurrentPoint)   这一段是按点计费的函数,里面缺少扣点部分
szSQL = "SELECT Price FROM v_pro_price WHERE Prog_ID=" & iGameID
rsData.Open szSQL,con,1,3
if not rsData.EOF then iGamePrice = rsData("Price")
rsData.Close


if iGamePrice * iDiscount / 100 > iCurrentPoint then
Response.Write "<script language='JScript'>alert('你的帐户上余额不足,请充值!');window.close();</script>"
Response.End
end if
end function


function CheckMonth(iUserID, iUnitValue)    这一段是按月计费函数,比较完整,包括了计费功能。
szSQL = "SELECT account,LastCheckDate FROM CusTomer WHERE CusTomer_ID=" & iUserID
rsData.Open szSQL,con,1,3
if not rsData.EOF then
iAccount = rsData("account")
szCheckDate = rsData("LastCheckDate")
if DateDiff("d", szCheckDate, now) >= 30 or szCheckDate = "" or IsNull(szCheckDate) then
if iAccount < iUnitValue then
Response.Write "<script language='JScript'>alert('你的帐户上余额不足,请充值!');window.close();</script>"
Response.End
else
if IsNull(szCheckDate) then
szCheckDate = now
elseif szCheckDate = "" then
szCheckDate = now
else
szCheckDate = DateAdd("d", 30, szCheckDate)
end if


rsData("account") = iAccount - iUnitValue    这个地方就是计费的,对,就是这个减法运算
rsData("LastCheckDate") = szCheckDate
rsData.Update

end if
end if
end if
rsData.Close
end function


function CheckFlux(iGameID, iCurrentFlux)   这一段是按流量计费的,里面缺少扣点部分
szSQL = "SELECT FileLen FROM v_proginfo WHERE Prog_ID=" & iGameID
rsData.Open szSQL,con,1,3
if not rsData.EOF then iGameLen = rsData("FileLen")
rsData.Close


szSQL = "SELECT Price FROM v_pro_price WHERE Prog_ID=" & iGameID
rsData.Open szSQL,con,1,3
if not rsData.EOF then iGamePrice = rsData("Price")
rsData.Close


if iGameLen * iGamePrice > iCurrentFlux * 1024 * 1024 / 8 then
Response.Write "<script language='JScript'>alert('你的剩余流量不足,请充值!');window.close();</script>"
Response.End
end if
end function


function CheckHour(iGameID, iCurrentHour)   这一段是按小时计费的,里面缺少扣点部分
szSQL = "SELECT PlayTime FROM v_proginfo WHERE Prog_ID=" & iGameID
rsData.Open szSQL,con,1,3
if not rsData.EOF then
szPlayTime = rsData("PlayTime")


iTimeHour = Mid(szPlayTime, 1, 2)
iTimeMin = Mid(szPlayTime, 3, 2)
iTimeSec = Mid(szPlayTime, 5, 2)


if rsData("PlayTime") <> "000000" then iGameTime = Clng(iTimeHour * 3600 + iTimeMin * 60 + iTimeSec)
end if
rsData.Close


szSQL = "SELECT Price FROM v_pro_price WHERE Prog_ID=" & iGameID
rsData.Open szSQL,con,1,3
if not rsData.EOF then iGamePrice = rsData("Price")
rsData.Close


if (iGameTime / 3600) * iGamePrice > iCurrentHour then
Response.Write "<script language='JScript'>alert('你的剩余时间不足,请充值!');window.close();</script>"
Response.End
end if
end function


//////////////////////////////////////////////////////////////
iGameID = Encode(Request.QueryString("id"))
bRefresh = Encode(Request.QueryString("rf"))
iPlayerType = Encode(Request.QueryString("PlayerType")) '区分LIVE和VOD
iUserID = Session("CusTomer_ID")
iEmbedMode = Encode(Request.QueryString("EmbedMode"))
iSendType = Encode(Request.QueryString("SendType"))


'if Len(iSendType) = 0 then iSendType = 1
if Len(iEmbedMode) = 0 then iEmbedMode = 1
if Len(iPlayerType) = 0 then iPlayerType = 2


if Session("Option_RegMode") = 2 and Len(iUserID) = 0 then
iUserID = 2
szSQL = "SELECT CusTomer_ID FROM CusTomer WHERE UserName='!GUEST'"
rsData.Open szSQL,con,1,3
if not rsData.EOF then iUserID = rsData("CusTomer_ID")
rsData.Close
end if


x = GetUserInfo(iUserID)
if iPurchase_Mode = 0 then
if iPlayerType = 1 then
iChannelPrice = 0
szSQL = "SELECT Price FROM Channel WHERE Channel_ID=" & iGameID
rsData.Open szSQL,con,1,3
if not rsData.EOF then iChannelPrice = rsData("Price")
rsData.Close


if iChannelPrice > 0 then
if iUserType = 1 then
iUnitValue = Clng(Session("Option_Unit_Month"))
x = CheckMonth(iUserID, iUnitValue)
else
if iAccount <= 0 then
Response.Write "<script language='JScript'>alert('你的余额不足,请充值!');top.history.back(-1);</script>"
Response.End
end if
end if
end if
end if


if iPlayerType = 2 then    这个地方是判断用户类型,然后调用那几个函数计费的。
if iUserType = 0 then
szPayFlag = "按点次付费"
iUnitValue = Clng(Session("Option_Unit_Point"))
iCurrentPoint = iAccount * iUnitValue
x = CheckPoint(iGameID, iCurrentPoint)
elseif iUserType = 1 then
szPayFlag = "按整月付费"
iUnitValue = Clng(Session("Option_Unit_Month"))
x = CheckMonth(iUserID, iUnitValue)
elseif iUserType = 2 then
szPayFlag = "按流量付费"
iUnitValue = Clng(Session("Option_Unit_MB"))
iCurrentFlux = iAccount * iUnitValue
x = CheckFlux(iGameID, iCurrentFlux)
elseif iUserType = 3 then
szPayFlag = "按时间付费"
iUnitValue = Clng(Session("Option_Unit_Hour"))
iCurrentHour = iAccount * iUnitValue
x = CheckHour(iGameID, iCurrentHour)
end if
end if
end if


if iPlayerType = 2 then
x = CheckRight(iGameID) '检查节目级别


szSQL = "SELECT ProgName,FileName,FileType,PlayTime,Type_ID FROM v_proginfo WHERE Prog_ID=" & iGameID
rsData.Open szSQL,con,1,3
if not rsData.EOF then
szProgName = rsData("ProgName")
szUrl = rsData("FileName")
szFileType = rsData("FileType")
szPlayTime = rsData("PlayTime")
iTypeID = rsData("Type_ID")
end if
rsData.Close


if szPlayTime <> "000000" or szFileType = "asf" or szFileType = "wmv" or szFileType = "wma" then
if bRefresh = "1" then szErrorMsg = "onLoad='window.opener.window.location.reload();'"
else
Response.Redirect "consume.asp?ProgID=" & iGameID & "&TypeID=" & iTypeID & "&CusTomerID=" & iUserID & "&UserName=" & szUserName & "&URL=" & URLEncode(szUrl)
end if


szProg_GUID = GetProgramGUID(iGameID)
szSQL = "SELECT Part_No,Prog_ID FROM v_proginfo WHERE Prog_GUID='" & szProg_GUID & "' ORDER BY Part_No ASC"
rsData.Open szSQL,con,1,3


szParmProgName = szProgName
if not rsData.EOF then
if rsData.RecordCount = 1 then
szParmProgName = szParmProgName
elseif rsData.RecordCount = 2 then
do while not rsData.EOF
if rsData("Prog_ID") = Cint(iGameID) then
if rsData("Part_No") = 1 then szParmProgName = szParmProgName & " - 上集"
if rsData("Part_No") = 2 then szParmProgName = szParmProgName & " - 下集"
exit do
end if
rsData.MoveNext
loop
elseif rsData.RecordCount = 3 then
do while not rsData.EOF
if rsData("Prog_ID") = Cint(iGameID) then
if rsData("Part_No") = 1 then szParmProgName = szParmProgName & " - 上集"
if rsData("Part_No") = 2 then szParmProgName = szParmProgName & " - 中集"
if rsData("Part_No") = 3 then szParmProgName = szParmProgName & " - 下集"
exit do
end if
rsData.MoveNext
loop
else
do while not rsData.EOF
if rsData("Prog_ID") = Cint(iGameID) then
szParmProgName = szParmProgName & " - 第 " & rsData("Part_No") & " 集"
exit do
end if
rsData.MoveNext
loop
end if
end if
rsData.Close


szParmPlayMode = "1"
szParmPlayModeValue = iGameID
szServerAddr = "1.1.1.1"
end if


………………省略若干句


以下为修改后,增加了按点计费功能的部分,复制后在player.asp中替换掉相应部分就OK了。


[replyview][UserCP=100]


function CheckPoint(iGameID, iCurrentPoint)


szSQL = "SELECT Price FROM v_pro_price WHERE Prog_ID=" & iGameID
rsData.Open szSQL,con,1,3
if not rsData.EOF then iGamePrice = rsData("Price")
rsData.Close
if iGamePrice * iDiscount / 100 > iCurrentPoint then
Response.Write "<script language='JScript'>alert('你的帐户上余额不足,请充值!');window.close();</script>"
Response.End
else


szSQL = "SELECT account FROM CusTomer WHERE CusTomer_ID=" & iUserID
rsData.Open szSQL,con,1,3
if not rsData.EOF then
iAccount = rsData("account")
rsData("account") = iAccount - iGamePrice/3 * iDiscount / 100
rsData.Update
end if
rsData.Close


end if


end function



[/UserCP][/replyview]


[此贴子已经被作者于2006-2-24 0:44:30编辑过]
评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
离线adsl

发帖
340
金钱
14293
威望
0
贡献值
0
只看该作者 1 发表于: 2006-02-24

我好想学学

离线鑫海

发帖
338
金钱
100
威望
2
贡献值
10
只看该作者 2 发表于: 2006-02-24

ok,


谢谢。

离线peace
发帖
19
金钱
25650
威望
0
贡献值
0
只看该作者 3 发表于: 2006-02-24

厉害!佩服!

离线admin

发帖
17308
金钱
88510850
威望
88
贡献值
20070
只看该作者 4 发表于: 2006-02-24

真是不错呀.谢谢捧场!

离线lxh
发帖
146
金钱
24991
威望
1
贡献值
0
只看该作者 5 发表于: 2006-02-24

谢谢贡献.

离线313044800
发帖
30
金钱
26430
威望
0
贡献值
0
只看该作者 6 发表于: 2006-02-24

谢谢


发帖
133
金钱
24064
威望
0
贡献值
0
只看该作者 7 发表于: 2006-02-24

真是谢谢,辛苦了

离线lcdj02

发帖
186
金钱
23359
威望
0
贡献值
0
只看该作者 8 发表于: 2006-02-24

谢谢提供

离线nima
发帖
*
金钱
*
威望
*
贡献值
*
只看该作者 9 发表于: 2006-02-24

好贴


快速回复
限100 字节
 
上一个 下一个