我正在做一个项目,其中一个Web应用程序将以某种方式JavaScript代码收集有关访问者的统计信息,但据我所知,在服务器端PHP应用程序,我应该以某种方式处理代码,多刷新不计数和计数的IP为基础是不是一个好主意,因为许多用户可能有相同的IP,cookie或会话也容易受到此问题的攻击,因为cookie管理器可以清除与站点相关的所有cookie,这样PHP就无法识别用户并将其视为新用户,时间框架作业和所有其它解决该问题方法也是据我所知基于cookie或会话或IP或IP/引用者和来自报头的所有其它可用数据的混合,我怎么能处理它,从用户那里得到更可靠的数据,不允许他们创建虚假的统计数据。因为我相信一定有办法(我希望如此)...!
2条答案
按热度按时间w46czmvw1#
我认为cookie是解决这类问题的理想选择,但如果你不想使用它,那么你就有了一个很坚韧的cookie。不幸的是,由于HTTP是无状态的,你没有太多其他的选择。
在这种情况下,我会使用session vars,因为用户不能干预保存在那里的数据,但是存在会话劫持的风险。但是如果你的网站有这个漏洞,你需要考虑在一个更全球化的层面上保护网站,而不仅仅是点击计数器。会话变量被绑定到你的网站,因为其中的数据被保存在服务器上,而不是用户的浏览器中。并且绑定到您的用户,因为它在用户的浏览器中保存了一个带有密钥的cookie,以便从服务器请求数据。
下面是一个示例,说明如何实现这一点,而不必担心删除站点上的其他会话。
因为你只是在使用
unset()
这个计数器变量,所以你永远不会触及任何其他的会话变量。你不需要处理session_destroy()
,但是你需要确保在你想使用函数的每一个页面的开头都有一个session_start()
。如果您只想计算用户来自站点上其他页面的点击数,则可以编辑脚本,使其不考虑时间因素。
就我所知,这是一个对大多数网站来说安全级别合理的点击计数器,或者至少是一个好的开始。
关于PHP sessions的更多信息。
ubby3x7f2#
我创造了这个
如何使用
脚本生成counter.txt(如果不存在),仅在用户启动新会话或等待60秒刷新时递增访问