⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stat.aspx.cs

📁 最好用的站点内容管理系统 全部源代码都有
💻 CS
📖 第 1 页 / 共 2 页
字号:
//======================================================
//==     (c)2008 aspxcms inc by NeTCMS v1.0              ==
//==          Forum:bbs.aspxcms.com                   ==
//==         Website:www.aspxcms.com                  ==
//======================================================
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.ComponentModel;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.Drawing;
using System.Web.SessionState;
using NetCMS.Content;

public partial class stat_stat : NetCMS.Web.UI.BasePage
{
    Stat sta = new Stat();
    #region 定义public参数变量
    public static DataView dv;//公用视图
    public string _url;//前台地址
    public string code;//前台显示样式(滚动,图标,文本)

    #region 统计参数
    public string _page;//定义被访问页参数变量
    public string _ip;//定义IP参数变量
    public string _come;//定义来路统计参数变量

    public int _year;//年 
    public int _month;//月
    public int _day;//日
    public int _hour;//时
    public int _week;//周
    public string _time;//具体统计时间

    public string _soft="Other";//浏览器(默认为Other)
    public string _Os = "Other";//操作系统(默认为Other)
    public int _width = 800;//屏幕宽度(默认宽度为800)

    public string _country = "未知区域";//地区(大)
    public string _city = "";//(小)

    public int _online_person;//在线人数
    public int _IPtimeResh;//IP防刷新时间
    public string _sysenglish_name;//站点英文名
    public string _isipcheck;//IP防刷新开启?
    public string _isonline;//在线统计开启?

    public int _today;//今日统计数
    public int _yesterday;//昨日统计数
    public string _content_data;//综合统计时间
    public int _all;//总数
    public int _heigh;//最高数
    public string _heightime;//最高时的时间

    public int _user_visit;//用户本人的访问量
    public string _outstr = string.Empty;//输出字符串

    public string isDataBase = string.Empty;//是否是独立的数据库
    public string OnlyBaseConn = string.Empty;//独立数据库连接路径
    public string _stat_pram = string.Empty;//统计参数表
    public string _stat_info = string.Empty;//统计信息表
    public string _stat_content = string.Empty;//统计综合表
    public string _stat_class = string.Empty;//统计分类表
    #endregion
    #endregion

    #region 取得服务器变量集合
    System.Collections.Specialized.NameValueCollection ServerVariables = System.Web.HttpContext.Current.Request.ServerVariables;
    #endregion
    /// <summary>
    /// 页面载入时即开始进行条件统计
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    /// code by chenzhaohui

    private void Page_Load(object sender, System.EventArgs e)
    {
        Response.CacheControl = "no-cache"; //设置页面无缓存
        if (!IsPostBack){}

        #region 网页立即超时,防止漏统计
        Response.Expires = 0;
        #endregion

        /// <summary>
        /// 下面为开始进行各项数据的统计
        /// </summary>
        /// code by chenzhaohui
        
        #region 下面为开始进行各项数据的统计

        #region 获取页面来源(页面地址)
        if (ServerVariables["HTTP_REFERER"] != null)
        {
            _page = ServerVariables["HTTP_REFERER"].ToString();
        }
        else
        {
            _page = string.Empty;
        }
        #endregion

        #region 取指定长度信息
        if (_page != string.Empty && _page.Substring(_page.Length - 1, 1) == "/") _page = _page.Substring(0, _page.Length - 1);
        #endregion

        #region 从参数表里读出数据
        DataTable dt = sta.sel_StatParamInfo(); 
        dv = dt.DefaultView;
        _sysenglish_name = dv[0].Row["SystemNameE"].ToString();//站点英文名称
        _IPtimeResh = int.Parse(dv[0].Row["ipTime"].ToString());//IP防刷新时间
        _isipcheck = dv[0].Row["ipCheck"].ToString();//IP防刷新开启?
        _isonline = dv[0].Row["isOnlinestat"].ToString();//在线统计开启?

        #endregion

        #region 判断页面是否可以进行统计
        bool _ok_stat = true;
        if (_ok_stat)
        {
            /// <summary>
            /// 记录相关数据
            /// </summary>
            /// code by chenzhaohui

            #region 记录相关数据

            #region 取得访问者的ip信息值
            _ip = ServerVariables["REMOTE_ADDR"].ToString();
            #endregion

            #region 从mystat里取得传递过来的来路值
            if (Request.QueryString["come"] != null)
            {
                _come = Request.QueryString["come"];
            }
            else
            {
                _come = string.Empty;
            }
            if (_come != string.Empty && _come.Substring(_come.Length - 1, 1) == "/") _come = _come.Substring(0, _come.Length - 1);
            #endregion

            #region 时间----记录各种访问时间值(年,月,日,小时,具体访问时间[2007-3-30],周)

            _year = int.Parse(DateTime.Now.AddHours(0).Year.ToString());//年
            _month = int.Parse(DateTime.Now.AddHours(0).Month.ToString());//月
            _day = int.Parse(DateTime.Now.AddHours(0).Day.ToString());//日
            _hour = int.Parse(DateTime.Now.AddHours(0).Hour.ToString());//时
            _week = (int)DateTime.Now.AddHours(0).DayOfWeek;//周
            _time = DateTime.Now.AddHours(0).ToString();//具体时间

            #endregion

            #region 需要传递用户HTTP设备的变量,如:你使用的IE浏览器版本,还有你的机器名和操作系统......

            string useragent = ServerVariables["HTTP_USER_AGENT"].ToString();

            #endregion

            #region 将各类浏览器放入数组进行传值管理等

            string[,] arvsoft = new string[,] { { "NetCaptor", "NetCaptor" }, { "MSIE 6", "MSIE 6.x" }, { "MSIE 5", "MSIE 5.x" }, { "MSIE 4", "MSIE 4.x" }, { "Netscape", "Netscape" }, { "Opera", "Opera" } };
            #endregion
            
            #region 获取浏览器的值
            for (int i = 0; i < 6; i++)
            {
                if (useragent.IndexOf(arvsoft[i, 0].ToString()) > 0)
                {
                    _soft = arvsoft[i, 1];
                    break;
                }
            }
            #endregion

            #region 将各类操作系统放入数组进行传值管理等
            string[,] arvos = new string[,] { { "Windows NT 5.0", "Win2k" }, { "Windows NT 5.1", "WinXP" }, { "Windows NT 5.2", "Win2k3" }, { "Windows NT", "WinNT" }, { "Windows 9", "Win9x" }, { "unix", "类Unix" }, { "linux", "类Unix" }, { "SunOS", "类Unix" }, { "BSD", "类Unix" }, { "Mac", "Mac" } };
            #endregion
            #region 获取操作系统的值
            for (int i = 0; i < 10; i++)
            {
                if (useragent.IndexOf(arvos[i, 0].ToString()) > 0)
                {
                    _Os = arvos[i, 1];
                    break;
                }
            }
            #endregion

            #region 屏幕宽度screen.width

            #region 取得参数传递传过来的值screenwidth
            if (Request.QueryString["width"] != null)
            {
                _width = int.Parse(Request.QueryString["width"]);
            }
            #endregion
            #endregion

            /// <summary>
            /// 访问者所在地区,从数据表读取IP信息
            /// </summary>
            /// code by chenzhaohui

            #region 访问者所在地区,从数据表读取IP信息

                DataView dv1 = new DataView();
                long _ipnow = _GetIP(_ip);              
                string Sqll = "";
                Sqll = "select * from Address where StarIP<=" + _ipnow + " and EndIP>=" + _ipnow + "";
                DataTable dt_stat = stat_AcDb(Sqll);

                if (dt_stat != null && dt_stat.Rows.Count > 0)
                {
                    _country = dt_stat.Rows[0]["Country"].ToString();
                    _city = dt_stat.Rows[0]["City"].ToString();
                }
                
                #region 执行数据操作语句,返回更新数据,提交对数据的更改
                #endregion              
            #endregion

            #endregion

            /// <summary>
            /// 检查是否属于刷新
            /// </summary>
            /// code by chenzhaohui

            #region 检查是否属于刷新
            if (_isipcheck == "1")//防刷新处于开启状态
            {
                Response.AddHeader("Refresh", "" + _IPtimeResh + ""); 
            }
            #endregion

            #region 统计在线人数(根据IP数来统计)
            DateTime newtime = DateTime.Now.AddHours(0).AddMinutes(-20);

            #region 执行数据,返回更新数据
            DataTable dtp = sta.sel_Vip(newtime);
            dv1 = dtp.DefaultView;
            dv1.Table.AcceptChanges();

            #region 取得在线人数
            _online_person = dv1.Count;
            #endregion

            #endregion

            dv1.Dispose();//释放资源
            #endregion


            #region 读写详细数据库,往统计表里写数据(如果在线统计开启,则可以写数据,否则不能写数据进数据库)
            if (_isonline == "1")//在线统计开启状态
            {
                string statid = "";
                if (Request.QueryString["statid"] != null)
                {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -