我现在想统计各个文章的点击次数。 我想可以通过session来实现,一个会话为点击一次,但具体不知如何实现 有做过的给传授下经验啊 ~~~~~~~~~~~~~~~
解决方案 »
- 使用asp.net在服务器打开其他网站,并且自动提交
- Global 重写URL困惑
- 五一了,奢嗜一回,散分。捎带问个小问题
- 多选ListBox怎样绑定到数据库?
- js中判断是否是数字是用什么函数啊
- 求ASPX文件调用WEB开发C#类(DLL)的例子和说明?????????
- 通过win.open('a.aspx','','width=100,height=100)后重新进入b.aspx页面要求b.aspx显示显示为正常窗口,不是width=100,height=100;
- 一个难题:各位高手请进
- onclick 和onserverclick有什么不同,为什么有的可以用onclick,有的却不可以,能讲讲原因吗?
- HELP!
- .net中GridView的问题。。。高手求救。。
- 急啊,点button按钮毫无反应,验证都不起作用,谁帮我看看啊
ArrayList al = new ArrayList(); if (Session["ID"] != null)
{
al = (ArrayList)Session["id"];
if (!al.Contains("文章ID"))
{
//更新数据
al.Add("文章ID");
}
}
还是怎么回事?
先建TXT文件 再建一个Application_Start 在其中获取文件路径,读取文件 建一个 Session_Start 当新会话产生时进行 Application+1操作 建Application_End 当程序结束时把Application的值写入TXT文件中。这个写法可以防刷新,但当用户重新打开程序重复统计如果要限制用户一天只能访问1次可以考虑判断Ip
2 {
3 string _userIP;
4 if(Request.ServerVariables["HTTP_VIA"] == null)
5 {
6 userIP= Request.UserHostAddress;
7 }
8 else
9 {
10 userIP= Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
11 }
12 return userIP;
13 }如果担心IP会更换,那么用mac地址好了。 1[DllImport("Iphlpapi.dll")]
2 private static extern int SendARP(Int32 dest,Int32 host,ref Int64 mac,ref Int32 length);
3 [DllImport("Ws2_32.dll")]
4 private static extern Int32 inet_addr(string ip);
5
6 private void Page_Load(object sender, System.EventArgs e)
7 {
8 // 在此处放置用户代码以初始化页面
9 try
10 {
11 string userip=Request.UserHostAddress;
12 string strClientIP = Request.UserHostAddress.ToString().Trim();
13 Int32 ldest = inet_addr(strClientIP); //目的地的ip
14 Int32 lhost = inet_addr(""); //本地服务器的ip
15 Int64 macinfo = new Int64();
16 Int32 len = 6;
17 int res = SendARP(ldest,0, ref macinfo, ref len);
18 string mac_src=macinfo.ToString("X");
19 if(mac_src == "0")
20 {
21 if(userip=="127.0.0.1")
22 Response.Write ("正在访问Localhost!");
23 else
24 Response.Write ("欢迎来自IP为" + userip + "的朋友!" + "<br>");
25 return;
26 }
27
28 while(mac_src.Length<12)
29 {
30 mac_src = mac_src.Insert(0,"0");
31 }
32
33 string mac_dest="";
34
35 for(int i=0;i<11;i++)
36 {
37 if (0 == (i % 2))
38 {
39 if ( i == 10 )
40 {
41 mac_dest = mac_dest.Insert(0,mac_src.Substring(i,2));
42 }
43 else
44 {
45 mac_dest ="-" + mac_dest.Insert(0,mac_src.Substring(i,2));
46 }
47 }
48 }
49
50 Response.Write ("欢迎来自IP为"+userip+ "<br>" + ",MAC地址为"+mac_dest+"的朋友!"
51
52 + "<br>");
53 }
54 catch(Exception err)
55 {
56 Response.Write(err.Message);
57 }
58 }
59
文章的表里面应该有个访问次数的列,用户每次访问,在cookie里面找帖子编号,找不到就给数据库+1,找到就不加
{
if (!IsPostBack)
{ int i = 0;
if (int.TryParse(Request.QueryString["fid"], out i))
{
if (i > 0)
{
ShowFQAByNID(i);
FQAInfoService.AddClicksByFID(i); //计算点击率
ShowNextFqa();
}
}
else
{
Response.Redirect("induNews.aspx");
}
}
}
//===========操作数据库方法==============
/// <summary>
/// 页面载入,则增加一次点击率
/// </summary>
/// <param name="nid"></param>
public static void AddClicksByFID(int fid)
{
string sql = "update FQAInfo set F_Clicks=F_Clicks+1 where FID=@fid";
OleDbParameter par = new OleDbParameter("@fid", fid);
SqlHelper.ExecuteCommandNotReturn(sql, par);
}上面是最简单的点击率计算。
楼主要做得精细点的话需要动用IP获取、IP记录时间等等操作。存储过程要用上了