我现在有个新闻资讯 点击查看详细的时候 者点击率加一 现在的问题是 当点击进入详细页的时候 恶意刷新的时候点击率会继续累加 因为我的添加操作是放在加载事件里面的 请这方面知道的告诉我下 怎么判断 怎么做 最后是一个IP只能计算一次 谢谢啊
解决方案 »
- asp.net获取ul li的值
- 两个Iframe之间传值
- 如何加载框架
- 发布网站
- asp.net网站后台求助(快,哪个大侠解决了这个问题,我剩下的50分全给他了!)
- Response.Redirect()的问题!
- 关于datagrid里checkbox选中后客户端如何获取datagrid中被选中的数量.
- asp.net 中 .VB类 中如何使用Session或Cookies
- vs 2008 AJAX1 版本问题
- 我想用DataGrid中的CssClass来统一系统中的DataGrid样式,请高手点醒!
- 有谁用过jquery.colorbox.js在一个iframe中弹出一个页面不?可不可以自定义关闭这个iframe?
- jquery
是PAGELOAD吗? 是的话得到客户的IP 保存到服务器一个文件或者数据库中(随便你) 另外保存时间
这样刷新的时候判断IP是否出现过了
同一楼上判断IP,根据时间段间隔,在一定时间段内的IP只能算是一次
如果直接写DB,你就将SessionID和IP同时设定为主键。
一般要判定IP的话,最好结合判定Session(考虑到内网共IP出口问题)。
不过做这种分析,建议还是用工具,例如WebTrends之类的东西,可以直接分析IIS日志。
新闻资讯应该是有链接地址的吧,比如<a></a>这种标签
用脚本劫持一下标签的onclick事件,然后更新页面访问数。这样就不会存在刷新页面的时候记录数增加了。
这种方式的缺点就是防止不了恶意刷记录,别人会做同样的劫持。
记录ip的方法,可能导致局域网访问只被记录一次,记录数不正确。
我们把所有点击的 信息用一张表存起来 但是这个时候 我并不计算他的点击录 等到晚上没有人去用
然后 使用几个SQL就判断 真实 点击率应该是多少了
得到求情的Ip 网上又很多文章 然我想我页忘记了 好像是再request对象里面的
在a.aspx.CS文件的page_load()里写
if(!ispostback)
{
//向数据库插入用户IP
//1.判断这个IP今天是否已经加入过
//2.判断这个IP的MAC地址SESSIONID今天是否已加入过
//都满足则返回FALSE,满足1或不满足则+1。
//如果不判断同IP多电脑的情况不判断2.
}前台在HTML后加入
</html>
<script language="javascript" src="http://www.XXX.com/js/a.aspx"></script>
我自己想的。。呵呵。。不知道可不可以
然后判断cookie是否存在
以下是代码:(可以用的话,要加分哦)
<%@ Application Language="C#" %><script runat="server"> void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
Application.Lock();
Application["counter"] = 0;
Application["online"] = 0;
Application.UnLock();
}
void Application_End(object sender, EventArgs e)
{
// 在应用程序关闭时运行的代码 }
void Application_Error(object sender, EventArgs e)
{
// 在出现未处理的错误时运行的代码 } void Session_Start(object sender, EventArgs e)
{
// 在新会话启动时运行的代码
Application.Lock();
Application["counter"] = (int)Application["counter"] + 1;
Application["online"] = (int)Application["online"] + 1;
Application.UnLock(); } void Session_End(object sender, EventArgs e)
{
// 在会话结束时运行的代码。
// 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
// InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer
// 或 SQLServer,则不会引发该事件。
Application.Lock();
Application["online"] = (int)Application["online"] - 1;
Application.UnLock(); }
</script>
可以采用缓存的方式,在读取新闻的页面加入代码
<%@ OutputCache Duration="3600" VaryByParam="ID" %>
其中 VaryByParam参数值就是你传递的值,对其缓存,就可以防止频繁的刷新页面引起的恶意点击率