加载中…
个人资料
曼迪影视
曼迪影视
  • 博客等级:
  • 博客积分:0
  • 博客访问:5,610
  • 关注人气:5
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

Asp.Net/C# > 如何实现网站访问来源统计

(2010-12-07 21:22:09)
标签:

杂谈

分类: asp.net
本例子自实现了统计域名来源,未统计域名后的查询字符串。如搜索引擎查询后找到你站点的记录,查询字符串不在统计范围内。
  流程就是先通过Request.ServerVariables("http_referer")【asp】或者Request.ServerVariables["http_referer"]/Request.UrlReferrer【asp.net】得到来源页面的url,然后写入数据库中。
  
1.数据库tb中的统计表ref

-SQL
if
exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ref]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[ref]
GO

-SQL
CREATE TABLE [dbo].[ref] (
[Host] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[click] [int] NOT NULL
) ON [PRIMARY]
GO

2.然后是更新数据库的存储过程

-SQL
CREATE PROCEDURE updateref
@host nvarchar(200)
as
declare @num int
select
@num=count(*) from ref where host=@host
if @num=0 --没有此条主机记录则插入
  insert into ref values(@host,1)
else--更新
update ref set click=click+1 where host=@host
GO

下面是c#的一个类,用来调用存储过程更新数据库表

-C#
using System;
using System.Web;
using System.Data;
using System.Data.SqlClient;
public class DBOP
{
    /// <summary>
    /// 更新来源统计
    /// </summary>
    /// <param name="cn">数据库连接对象</param>
    public static void UpdateRef(SqlConnection cn)
    {
        //这里注意判断是有有来源页面
        string refHost = HttpContext.Current.Request.UrlReferrer == null ? "" : HttpContext.Current.Request.UrlReferrer.Host.ToLower();
        if (refHost != "" && refHost.IndexOf("code-design.cn") == -1)//如果是你自己的域名不用统计
        {
            if (refHost.StartsWith("www.")) refHost = refHost.Substring(4);//去掉www.
            try
            {
                SqlCommand cm = new SqlCommand("updateref", cn);
                cm.CommandType = CommandType.StoredProcedure;//设置为存储过程
                cm.Parameters.Add(new SqlParameter("@host", SqlDbType.NVarChar, 200, refHost));//添加参数
                cm.ExecuteNonQuery();//执行
            }
            catch { }
        }
    }

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
前一篇:seo优化
后一篇:2010年12月15日
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

    < 前一篇seo优化
    后一篇 >2010年12月15日
      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有