恐怖黎明仁慈的结局:asp页面当前在线人数显示问题?

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/28 23:57:00
网页上加载有一个简单的计数器用来显示当前网站访问状况,原来在xp SP1系统和没有装sp1的2003上都能显示,当XP升为SP2、2003升为SP1后其余项都能显示,就当前在线人数一项无法显示:

xp sp1和win2003的显示情况:
http://www.xihang.com.cn/Files/UpFiles/zc.jpg

xp sp2和win2003sp1的显示情况:
http://www.xihang.com.cn/Files/UpFiles/bad.jpg

这个计数器只有两个文件:counter.asp和OnlineCount.asp

counter.asp源代码如下:

<%
mode = LCASE(Request("mode"))
gif = Request("gif")

SET rsc = Server.CreateObject("ADODB.Recordset")
rsc.Open "Select * From counters" ,conn,1,3

LASTIP = rsc("LASTIP")
NEWIP = REQUEST.servervariables("REMOTE_ADDR")

IF CSTR(Month(rsc("DATE"))) <> CSTR(Month(DATE())) THEN

rsc("DATE") = DATE()
rsc("YESTERDAY") = rsc("TODAY")
rsc("BMONTH") = rsc("MONTH")
rsc("MONTH") = 1
rsc("TODAY") = 1
rsc.Update
ELSE
IF CSTR(Day(rsc("DATE"))) <> CSTR(Day(DATE())) THEN
rsc("DATE") = DATE()
rsc("YESTERDAY") = rsc("TODAY")
rsc("TODAY") = 1
rsc.Update
END IF

rsc("TOTAL") = rsc("TOTAL") + 1
rsc("TODAY") = rsc("TODAY") + 1
rsc("MONTH") = rsc("MONTH") + 1
rsc.Update
Session("UserID")=rsc("TOTAL")

end if

N = Now
D1 = #12/24/2004# ' 开始统计日期(月/日/年)
D2 = DateValue(N)
D3 = DateDiff("d", D1, D2)
response.write "总访问:"
GCounter( rsc("TOTAL") )
response.write " 人"
response.write "<img src='g.gif'> "
response.write "今日访问:"
GCounter( rsc("TODAY") )
response.write " 人"
response.write "<img src='g.gif'> "
response.write "昨日访问:"
GCounter( rsc("YESTERDAY") )
response.write " 人"
response.write "<img src='g.gif'> "
response.write "本月访问:"
GCounter( rsc("MONTH") )
response.write " 人"
response.write "<img src='g.gif'> "
N = Now
D2 = DateValue(N)
D1 = #07/09/2005# ' 开始统计日期(月/日/年)
response.write "已运行:"
GCounter( DateDiff("d", D1, D2) )
response.write " 天"
response.write "<img src='g.gif'> "
D3 = DateDiff("d", D1, D2)
response.write "平均访问量:"
GCounter( rsc("TOTAL")\D3 )
response.write " 人"
response.write "<img src='g.gif'> "
rsc.Close
response.write "当前<img src='counter/OnlineCount.asp'>人在线"
response.write ""
Function GCounter( counter )
Dim S, i, G
S = CStr( counter )

For i = 1 to Len(S)
G = G & "<IMG SRC=counter/" & Mid(S, i, 1) & ".gif Align=middle>"
Next
response.write G
End Function
%>

OnlineCount.asp源代码如下:

<%@ Language=JavaScript %>
<%
var strCountData="1234567890";
var theTime=new Date();
if (typeof(Application("GuestOnline"))=="undefined")
Application("GuestOnline")="0";
function CheckGuest()
{
//Check Me
if (typeof(Session("UserName"))=="undefined")
Session("UserName")="guest";
var strUserName=String(Session("UserName"));
var strGuestOnline=String(Application("GuestOnline"));
var GuestArray=strGuestOnline.split("\n");
var i;
var iGuestNum;
if (typeof(Session("GuestNum"))=="undefined")
{
for (i=0;i<GuestArray.length;i++)
{
if (GuestArray[i]=="0") break;
}
Session("GuestNum")=i;
}

iGuestNum=Session("GuestNum")*1;
if (iGuestNum>10000)iGuestNum=10000;

var strFormatTime=theTime.getTime();
strFormatTime="0000000000000000000"+strFormatTime;
strFormatTime=strFormatTime.substr(strFormatTime.length-16,16);

GuestArray[iGuestNum]=strFormatTime+strUserName;

strGuestOnline=GuestArray.join("\n");
Application("GuestOnline")=strGuestOnline;

return 1;
}
function GetNumber()
{
//Count Guests on line
var strFormatTime=theTime.getTime()-100*60*1000;
strFormatTime="0000000000000000000"+strFormatTime;
strFormatTime=strFormatTime.substr(strFormatTime.length-16,16);

var strGuestOnline=String(Application("GuestOnline"));
var GuestArray=strGuestOnline.split("\n");

var iGuestCounter=0;
var i;
for (i=0;i<GuestArray.length;i++)
{
if (GuestArray[i].substr(0,16)> strFormatTime)
iGuestCounter++;
else if (GuestArray[i].length>0)
GuestArray[i]="0";
}
strGuestOnline=GuestArray.join("\n");
Application("GuestOnline")=strGuestOnline;
return iGuestCounter;
}

CheckGuest();
//Output
strCountData=GetNumber();

var i;
strCountData="0"+strCountData;

var strDigits= new Array(
"0", "0x3c","0x66","0x66","0x66","0x66","0x66","0x66","0x66","0x66","0x3c", //0
"1","0x30","0x38","0x30","0x30","0x30","0x30","0x30","0x30","0x30","0x30", //1
"2","0x3c","0x66","0x60","0x60","0x30","0x18","0x0c","0x06","0x06","0x7e", //2
"3","0x3c","0x66","0x60","0x60","0x38","0x60","0x60","0x60","0x66","0x3c", //3
"4","0x30","0x30","0x38","0x38","0x34","0x34","0x32","0x7e","0x30","0x78", //4
"5","0x7e","0x06","0x06","0x06","0x3e","0x60","0x60","0x60","0x66","0x3c", //5
"6","0x38","0x0c","0x06","0x06","0x3e","0x66","0x66","0x66","0x66","0x3c", //6
"7","0x7e","0x66","0x60","0x60","0x30","0x30","0x18","0x18","0x0c","0x0c", //7
"8","0x3c","0x66","0x66","0x66","0x3c","0x66","0x66","0x66","0x66","0x3c", //8
"9","0x3c","0x66","0x66","0x66","0x66","0x7c","0x60","0x60","0x30","0x1c"); //9

var iCharCount=strCountData.length;
var iCharWidth=8;
var iCharHeight=10*1;
var theBit;
var theNum;
Response.ContentType ="image/x-xbitmap";
Response.Expires =0;

Response.Write ("#define counter_width "+ iCharWidth*iCharCount+"\r\n"); //图形宽
Response.Write ("#define counter_height "+ iCharHeight+"\r\n"); //图形高
Response.Write ("static unsigned char counter_bits[]={\r\n");

for (iRow=0;iRow<iCharHeight;iRow++)
for (i=0;i<iCharCount;i++)
{
theBit=strCountData.charAt(i);
for (k=0;k<strDigits.length;k+=(iCharHeight+1))
{
if (strDigits[k]==theBit)break;
}
if (k>=strDigits.length)k=0;
theOffset=k+1;

Response.Write (strDigits[theOffset+iRow]);
Response.Write (",");
}

Response.Write ("};\r\n");
%>