如何在Codeigniter中计算页面视图并按IP地址限制计数?

时间:2012-05-08 12:10:12

标签: mysql database codeigniter count pageviews

我希望计算人们在我的网站上查看我的用户个人资料的次数。

我想在我的数据库中保留一个计数,并在用户刷新页面时停止计数递增。按IP限制。

据我所知,需要每天创建和清空一个ip地址缓存。

是否有关于如何执行此操作的说明。谁能跟我说话呢?

3 个答案:

答案 0 :(得分:13)

  1. 您可以使用$this->input->ip_address()获取控制器中用户的IP地址
  2. 在数据库中保存ip,用户首次访问网站的时间和计数器
  3. 如果时间少于24小时,请勿递增计数器。
  4. 如果时间超过24小时,请更新ip的时间并更新计数器。
  5. 获取计数器:$this->db->select_sum("counter")->get("views_table");并处理结果。

答案 1 :(得分:0)

创建数据库表:

id | page_id | ip_address | views

读出用户的IP地址($_SERVER['REMOTE_ADDR']),检查当前页面的表中是否存在ip-address,如果是,则增加views列,否则创建新的记录设置{{1一个人。 如果views给他们一个简洁的信息,要求他们不要那么好奇。

不是那么难,是吗? ;)

对于“当用户刷新页面时停止计数递增”的部分;你的意思是如果页面视图刷新(有人推F5),你想增加计数吗?这几乎是不可能的,不要试试......

为了清空数据库,使用cronjob,或者如果你无法访问它,那就是穷人cron(google for that)

答案 2 :(得分:0)

  • 在存储用户的表格中,添加一个代表视图计数的列。
  • 每次访问您的个人资料时,您都需要增加此值。
  • 按照giorgio的说明制作一个单独的表并存储IP地址,但添加DATETIME列。
  • 每次访问您的个人资料时,您需要检查该个人资料的该表中是否存在该IP地址:如果是,则不增加查看次数;如果不是,则插入一个包含IP地址,您的个人资料ID和日期时间的新行。
  • 每天使用cron设置一次清理作业,确定跟踪的持续时间:删除所有较旧的1天,2天,一周的条目 - 您想要的任何内容 - 这是跟踪IP的时间。 这意味着当x天后相同的IP访问时,视图计数可能会增加,除非它仍然存在于数据库中。