| 
/* 原创:豆腐
 请大家在转载和使用的时候  保留这条信息
 */
 /* dbcn.asp
 创建数据库连接的 公用程序
 */
 <%
 function OpenConn()
 '创建数据库连接
 dim ConnStr
 dim uid
 dim pwd
 dim db
 uid="BBC"
 pwd="BBC"
 db="BBC"
 Softserver="Softdepserver"
 Set Conn = Server.CreateObject("ADODB.Connection")
 ConnStr="Provider=SQLOLEDB.1;UID=" & uid & ";PWD=" & pwd & ";database=" & db & ";server=" & Softserver & ""
 
 Conn.Open ConnStr
 
 set OpenConn=Conn
 end function
 
 function OpenRst()
 '创建数据库记录集
 set Rst=Server.CreateObject ("ADODB.Recordset")
 set OpenRst=Rst
 end function
 %>
 /*
 staticFunc
 统计程序所需要用到的函数库
 */
 <!--#include file="dbcn.asp"-->
 <%
 set conn=openConn()
 set rst=openRst()
 sub WriteDateTable(intStart,intEnd,strArray,ccount)
 '生成统计表
 %>
 <table border=1 width=100%>
 <%for i= intStart to intEnd%>
 <tr>
 <td width=30%><%=strArray(i)%></td>
 <td width=60%>
 <%
 if rst.eof then
 setbar 0,ccount
 else
 if rst(1)=i then
 setbar rst(3),ccount
 if not rst.eof then rst.movenext
 else
 setbar 0,ccount
 end if
 end if
 %>
 </td>
 </tr>
 <%next%>
 </table>
 <%
 end sub
 %>
 <%
 sub setBar(num,ccount)
 '生成统计条
 if ccount=0 then
 percent=0
 else
 percent=cInt(num/ccount*10000)/100
 end if
 strGif="bar.gif"
 %>
 <img src="<%=strGif%>" width="<%=percent+5%>" height=10><font color=red><%=percent%>%</font>
 <td align=center>
 <%=num%>
 </td>
 <%
 end sub
 %>
 <%
 sub writeDayStatic(userid)
 '生成日统计
 i=0
 dim strArray(100)
 for i=0 to 23
 strArray(i)= cStr(i) & "点--" & cstr(i+1) & "点"
 next
 i=0
 set rst=openRst()
 strSQL="select sum(num) as ccount from dateStatic where userid='" & userid & "'"
 rst.open strSQL,conn,3,3
 if isnull(Rst("ccount")) then
 ccount=0
 else
 ccount=Rst("ccount")
 end if
 strSQL="select * from dateStatic where userid='" & userid & "' order by hourid"
 set rst=openRst()
 rst.open strSQL,conn,3,3
 %>
 访问总数<%=ccount%>
 <table border=1 width=100%>
 <tr height=100%>
 <td width=50%><% WriteDateTable 0, 11, strArray ,ccount %></td>
 <td width=50%><%WriteDateTable 12, 23, strArray ,ccount %></td>
 </tr>
 </table>
 <%
 end sub
 %>
 <%
 sub writeWeekStatic(userid)
 '生成周统计
 i=0
 dim strArray(7)
 strArray(0)="星期日"
 strArray(1)="星期一"
 strArray(2)="星期二"
 strArray(3)="星期三"
 strArray(4)="星期四"
 strArray(5)="星期五"
 strArray(6)="星期六"
 i=0
 strSQL="select sum(num) as ccount from weekStatic where userid='" & userid & "'"
 set rst=openRst()
 rst.open strSQL,conn,3,3
 if isnull(Rst("ccount")) then
 ccount=0
 else
 ccount=Rst("ccount")
 end if
 strSQL="select * from WeekStatic where userid='" & userid & "' order by dayid"
 set rst=openRst()
 rst.open strSQL,conn,3,3
 %>
 访问总数<%=ccount%>
 <table border=1 width=100%>
 <tr height=100%>
 <td width=100%><% WriteDateTable 0, 6, strArray ,ccount %></td>
 </tr>
 </table>
 <%
 end sub
 %>
 <%
 sub writeMonthStatic(userid)
 '生成月统计
 i=0
 dim strArray(32)
 for i=1 to  31
 strArray(i)=cStr(i) & "日"
 next
 i=0
 strSQL="select sum(num) as ccount from MonthStatic where userid='" & userid & "'"
 set rst=openRst()
 rst.open strSQL,conn,3,3
 if isnull(Rst("ccount")) then
 ccount=0
 else
 ccount=Rst("ccount")
 end if
 strSQL="select * from MonthStatic where userid='" & userid & "' order by dayid"
 set rst=openRst()
 rst.open strSQL,conn,3,3
 %>
 访问总数<%=ccount%>
 <table border=1 width=100%>
 <tr height=100%>
 <td width=50%><% WriteDateTable 1, 16, strArray ,ccount %></td>
 <td width=50%><% WriteDateTable 17, 31, strArray ,ccount %></td>
 </tr>
 </table>
 <%
 end sub
 %>
 <%
 sub writeYearStatic(userid)
 i=0
 dim strArray(13)
 for i=1 to  12
 strArray(i)=cStr(i) & "月"
 next
 i=0
 strSQL="select sum(num) as ccount from YearStatic where userid='" & userid & "'"
 set rst=openRst()
 rst.open strSQL,conn,3,3
 if isnull(Rst("ccount")) then
 ccount=0
 else
 ccount=Rst("ccount")
 end if
 strSQL="select * from YearStatic where userid='" & userid & "' order by monthid"
 set rst=openRst()
 rst.open strSQL,conn,3,3
 %>
 访问总数<%=ccount%>
 <table border=1 width=100%>
 <tr height=100%>
 <td width=50%><% WriteDateTable 1, 6, strArray ,ccount %></td>
 <td width=50%><% WriteDateTable 7, 12, strArray ,ccount %></td>
 </tr>
 </table>
 <%
 end sub
 %>
 <%
 sub WriteRecentInfo(userid)
 '显示访问者的浏览器分布
 StrSQL="select top 10 * from accessstat where userid='" & userid & "' order by VisitTime desc"
 set rst=openRst()
 Rst.open StrSQL,Conn,3,1
 %>
 <table border=1 width=100%  align=center cellSpacing=1 cellPadding=1>
 <tr>
 <td width=5% align=center>序 号</td>
 <td width=20% align=center>来访时间</td>
 <td width=15% align=center>IP地址</td>
 <td width=15% align=center>所用操作系统</td>
 <td width=15% align=center>所用浏览器类型</td>
 <td width=30% align=center>浏览的上一页</td>
 <td width=0%></td>
 </tr>
 <% for i=1 to Rst.RecordCount %>
 <tr>
 <td width=5% align=center><%=i%></td>
 <td width=20% align=center><%=Rst("VisitTime")%></td>
 <td width=15% align=center><%=Rst("IPAddr")%></td>
 <td width=15% align=center><%=Rst("UseSystem")%></td>
 <td width=15% align=center><%=Rst("BrowserType")%></td>
 <td width=30% align=center><a HREF=<%=Rst("LastPage")%>><%Response.Write Rst("LastPage")%></a></td>
 <td width=0%></td>
 </tr>
 <% Rst.MoveNext%>
 <% Next %>
 </table>
 <%
 end sub
 %>
 <%
 sub WriteBrowserInfo(userid)
 Set Rst=OpenRst()
 strSQL="select count(*) as VisitCount from AccessStat where userid='" & userid & "'"
 Rst.open strSQL,Conn,3,1
 TotalVisit=rst(0)
 StrSQL="select BrowserType,count(BrowserType) as visitcount from AccessStat where userid='" & userid & "' group by BrowserType order by VisitCount desc"
 Set Rst=OpenRst()
 Rst.open StrSQL,Conn,3,1
 %>
 <table border=1 width=100%  align=center cellSpacing=1 cellPadding=1>
 <tr>
 <td width=5% align=center>序 号</td>
 <td width=15% align=center>所用浏览器类型</td>
 <td width=40% align=center>访问比例尺表示</td>
 <td width=15% align=center>访问次数</td>
 <td width=5%></td>
 </tr>
 <%for i=1 to     Rst.RecordCount %>
 <tr>
 <td width=5% align=center><%=i%></td>
 <td width=15% align=center><%=Rst("BrowserType")%></td>
 <!--
 <td width=15% align=center><%=Rst("VisitCount")%></td>
 <td width=10% align=center><%=FormatNumber(CInt(Rst("VisitCount")/TotalVisit*10000)/100,true,true)%>%</td>
 <td width=40% align=left><img src=bar.gif width=<%=(Rst("VisitCount")/TotalVisit)*300%> height=10></td>
 -->
 <td><%setbar Rst("VisitCount"),TotalVisit %></td>
 <td width=5% ></td>
 </tr>
 <%Rst.MoveNext%>
 <% Next %>
 </table>
 <%
 end sub
 %>
 <%
 sub InsertData(userid)
 '处理浏览者信息
 ExecUserInfo userid
 '处理日统计
 ExecDayStatic userid
 '处理周统计
 ExecWeekStatic userid
 '处理月统计
 ExecMonthStatic userid
 '处理年统计
 ExecYearStatic userid
 end sub
 %>
 <%
 sub ExecUserInfo(userid)
 '处理浏览者信息
 strRet=Request.ServerVariables("HTTP_USER_AGENT")
 strArray=split(strRet,"(")
 strRet=left(strArray(1),len(strArray(1))-1)
 strArray=split(strRet,";")
 strBrowserName=strArray(1)       '浏览器
 strUseSystem=strArray(2)         '用户操作系统
 strPrPage=Request.ServerVariables("HTTP_REFERER")     '从何而来
 if strPrPage="" then
 strPrPage="http://" & Request.ServerVariables("SERVER_NAME") & Request.ServerVariables("SCRIPT_NAME")
 end if
 strIPAddr=Request.ServerVariables ("REMOTE_ADDR")        '用户IP地址
 strSQL="insert into AccessStat(UserID,VisitTime,IPAddr,UseSystem,BrowserType,LastPage) "
 strSQL=strSQL & "values ('" & trim(userid) & "',getDate(),'" & trim(strIPAddr) & "','"
 strSQL=strSQL & trim(strUseSystem) & "','" & trim(strBrowserName) & "','" & trim(strPrPage) & "')"
 conn.execute strSQL
 end sub
 %>
 <%
 sub ExecDayStatic(userid)
 '处理每日的小时数据
 strSQL="select * from DateStatic where dateid=datepart(dy,getdate()) and userid='" & userid & "'"
 set rst=openrst()
 rst.open strSQL,conn,3,3
 if rst.eof and rst.bof then
 strSQL="delete from DateStatic where userid='" & userid & "'"
 conn.execute strSQL
 for i=0 to 23
 strSQL="insert into DateStatic values(datepart(dy,getdate())," & cStr(i) & ",'" & userid & "',0)"
 conn.execute strSQL
 next
 end if
 strSQL="update datestatic set num=num + 1 where dateid=datepart(dy,getdate()) and hourid= datepart(hh,getdate()) and userid='" & userid & "'"
 conn.execute strSQL
 end sub
 %>
 <%
 sub ExecWeekStatic(userid)
 '处理每周的日数据
 strSQL="select * from WeekStatic where weekid=datepart(ww,getdate()) and userid='" & userid & "'"
 set rst=openRst()
 rst.open strSQL,conn,3,3
 if rst.eof and rst.bof then
 strSQL="delete from WeekStatic  where userid='" & userid & "'"
 conn.execute strSQL
 for i=0 to 6
 strSQL="insert into WeekStatic values(datepart(ww,getdate())," & cStr(i) & ",'" & userid & "',0)"
 conn.execute strSQL
 next
 end if
 strSQL="update weekstatic set num=num + 1 where weekid=datepart(ww,getdate()) and dayid+1= datepart(dw,getdate())  and userid='" & userid & "'"
 conn.execute strSQL
 end sub
 %>
 <%
 sub ExecMonthStatic(userid)
 '处理每月的日数据
 strSQL="select * from MonthStatic where monthid=datepart(mm,getdate()) and userid='" & userid & "'"
 set rst=openRst()
 rst.open strSQL,conn,3,3
 if rst.eof and rst.bof then
 strSQL="delete from MonthStatic  where userid='" & userid & "'"
 conn.execute strSQL
 for i=1 to 31
 strSQL="insert into MonthStatic values(datepart(mm,getdate())," & cStr(i) & ",'" & userid & "',0)"
 conn.execute strSQL
 next
 end if
 strSQL="update monthstatic set num=num + 1 where monthid=datepart(mm,getdate()) and dayid= datepart(dd,getdate())"
 conn.execute strSQL
 end sub
 %>
 <%
 sub ExecYearStatic(userid)
 '处理每年的月数据
 strSQL="select * from YearStatic where yearid=datepart(yy,getdate()) and userid='" & userid & "'"
 set rst=openRst()
 rst.open strSQL,conn,3,3
 if rst.eof and rst.bof then
 strSQL="delete from YearStatic where userid='" & userid & "'"
 conn.execute strSQL
 for i=1 to 12
 strSQL="insert into YearStatic values(datepart(yy,getdate())," & cStr(i) & ",'" & userid & "',0)"
 conn.execute strSQL
 next
 end if
 strSQL="update YearStatic set num=num + 1 where Yearid=datepart(yy,getdate()) and Monthid= datepart(mm,getdate()) and userid='" & userid & "'"
 conn.execute strSQL
 end sub
 %>
 |