一般的网页计数器制作实现思路:首先设定存放统计数据的文件(counter.txt)——读取文件中的内容存入字符串——自加操作——以写入方式打开文件写入数据——从文件中输出统计数据——关闭文件。

代码:

<?php
 $counter_fname='counter.txt';//动态获取需要统计的页面,并进行命名
 $counter=file_get_contents($counter_fname);  //将文件的内容读入到一个字符串中
 $counter+=0;
 $counter++;
  if($fp=fopen($counter_fname,'w')){
 fputs($fp,$counter);//输出统计数据

fclose($fp);
  }
  echo "document.writeln('<input type=text value=$counter>');";
?>

一、不限IP统计方式即只要刷新页面统计数就会增加

实现思路:首先设定存放统计数据的文件(counter[i].txt)是动态获取的即可以实现多页面统计——读取文件中的内容存入字符串——自加操作——以写入方式打开文件写入数据——从文件中输出统计数据——关闭文件。

代码:

counter.php页面:

<?php
 $counter_fname='counter'.$_REQUEST[id].'.txt';//动态获取需要统计的页面,并进行命名
 $counter=file_get_contents($counter_fname);
 $counter+=0;
 $counter++;
  if($fp=fopen($counter_fname,'w')){
 fputs($fp,$counter);fclose($fp);
  }
  echo "document.writeln('<input type=text value=$counter>');";
?>

访问页面:jsq.php   代码: <script type=text/javascript src=counter_ip.php?id=1></script>

二、限IP统计方式即只有不同ip访问才会被记录为统计

实现思路:首先设定存放统计数据的文件(counter[i].txt)是动态获取的即可以实现多页面统计——在设定存放统计ip数据的文件(ip[i].txt)是动态获取的——读取文件中的内容存入字符串——比较获取的ip是否已经存在于ip文件中,未存在重新写入自加操作——更新ip——以写入方式打开文件写入数据——从文件中输出统计数据——关闭文件。

counter_ip.php页面代码:

<?php
 $counter_fname='counter'.$_REQUEST["id"].'.txt';//动态获取需要统计的页面,并进行命名
  $counter_ips='ip'.$_REQUEST["id"].'.txt';//
 $counter=file_get_contents($counter_fname);
 $counter+=0;
//判断本IP是否曾经访问过
$ips=preg_split("/\s+/",file_get_contents($counter_ips));
$ip=$_SERVER["REMOTE_ADDR"];
if(!in_array($ip,$ips)){//倘若该IP不在ip文件夹中,就新增加访问数据
//更新计数器
 $counter++;
  if($fp=fopen($counter_fname,'w')){
 fputs($fp,$counter);fclose($fp);
  }
//更新访问IP
if($fp=fopen($counter_ips,'a')){
 fputs($fp,"\n$ip");fclose($fp);
}
}
  echo "document.writeln('<input type=text value=$counter>');";
?>

访问页面:jsq_ip.php   代码: <script type=text/javascript src=counter_ip.php?id=2></script>

【PHP】php+txt实现网页计数器(限IP统计方式和不限IP统计方式)的更多相关文章

  1. 限流(四)nginx接入层限流

    一.nginx限流模块 接入层指的是请求流量的入口,我们可以在这里做很多控制,比如:负载均衡,缓存,限流等. nginx中针对限流有两个模块可以处理: 1)ngx_http_limit_req_mod ...

  2. TCP/IP协议(二)tcp/ip基础知识

    今天凌晨时候看书,突然想到一个问题:怎样做到持续学习?然后得出这样一个结论:放弃不必要的社交,控制欲望,克服懒惰... 然后又有了新的问题:学习效率时高时低,状态不好怎么解决?这也是我最近在思考的问题 ...

  3. TCP/IP详解学习笔记(5)-IP选路,动态选路,和一些细节

    1.静态IP选路 1.1.一个简单的路由表 选路是IP层最重要的一个功能之一.前面的部分已经简单的讲过路由器是通过何种规则来根据IP数据包的IP地址来选择路由.这里就不重复了.首先来看看一个简单的系统 ...

  4. 用shell统计访问日志里每个ip访问次数【转】

    今天,要统计一个系统的每个ip访问次数,于是我找到该系统访问日志,并写脚本实现.   访问日志情况: [root@qular ~]# cd /usr/local/nginx/logs/ [root@q ...

  5. IP白名单添加了当前IP,获取access_token时依然报出错误码40164的坑

    开发公众号网页时,想要调用微信API接口,令人无奈的是,想要调用各接口都需使用access_token,于是,获取access_token的征途开始了…… 1.开发者基本配置 (1) 公众平台官网登录 ...

  6. Shell 命令行统计 apache 网站日志访问IP以及IP归属地

    Shell 命令行统计 apache 网站日志访问IP以及IP归属地 我的一个站点用 apache 服务跑着,积攒了很多的日志.我想用 shell 看看有哪些人访问过我的站点,并且他来自哪里. 因为日 ...

  7. 限流(三)Redis + lua分布式限流

    一.简介 1)分布式限流 如果是单实例项目,我们使用Guava这样的轻便又高性能的堆缓存来处理限流.但是当项目发展为多实例了以后呢?这时候我们就需要采用分布式限流的方式,分布式限流可以以redis + ...

  8. TCP/IP学习笔记(5)------IP选路

    静态IP选路 一个简单的路由表 选路是IP层最重要的一个功能之一.前面的部分已经简单的讲过路由器是通过何种规则来根据IP数据包的IP地址来选择路由.这里就不重复了.首先来看看一个简单的系统路由表. D ...

  9. WireShark——IP协议包分析(Ping分析IP协议包)

    互联网协议 IP 是 Internet Protocol 的缩写,中文缩写为“网协”.IP 协议是位于 OSI 模型中第三层的协议,其主要目的就是使得网络间能够互联通信.前面介绍了 ARP 协议, 该 ...

随机推荐

  1. orm fluentdata使用相关文章

    微型orm fluentdata使用:http://www.360doc.com/content/12/1228/23/9200790_256885743.shtml

  2. java中的递归方法

    一.含义 递归算法是一种直接或间接地调用自身的算法.在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解. 二.例子 99乘法表的例子 1:普通实现99乘法表太 ...

  3. UIKit Animation

    UIKit Animation 1.属性动画 - (void)changeFrameAnimation { [UIView beginAnimations:@"frameAnimation& ...

  4. 给分类(Category)添加属性

    遇到一个问题,写了一个分类,但原先类的属性不够用.添加一个属性,调用的时候崩溃了,说是找不到getter.setter方法.查了下文档发现,OC的分类允许给分类添加属性,但不会自动生成getter.s ...

  5. CSS 列表

    CSS列表属性作用如下: 设置不同的列表项标记为有序列表 设置不同的列表项标记为无序列表 设置列表项标记为图像 列表 在HTML中,有两种类型的列表: 无序列表 - 列表项标记用特殊图形(如小黑点.小 ...

  6. LATEX学习笔记1

    LATEX源文件的结构分三大部分,依次为:文档类声明.序言(可选).正文. 文档结构 \documentclass{article} \usepackage{amsmath} \usepackage{ ...

  7. 桌面浏览器实现滑动翻页效果(Swiper)

    还是那个号称很炫的B/S展示软件,在液晶屏上展示需要有滑动翻页的效果(在同一页面滑动切换内容,不是切换页面),最后确定使用功能很强大的Swiper类库. 具体优点可参考:http://www.chin ...

  8. USACO 2.2 Party Lamps 派对灯 (lamps)

    题目描述 在IOI98的节日宴会上,我们有N(10<=N<=100)盏彩色灯,他们分别从1到N被标上号码.这些灯都连接到四个按钮: 按钮1:当按下此按钮,将改变所有的灯:本来亮着的灯就熄灭 ...

  9. php开源项目学习二次开发的计划

      开源项目: cms 国内 dedecms cmstop 国外 joomla, drupal 电商 国内 ecshop 国外 Magento 论坛 discuz 博客 wordpress   学习时 ...

  10. git+Coding.netの小试牛刀

    一.将本地项目推送到Coding中 1.在Coding中新建项目,填写项目名称和项目描述,设置属性,勾选初始化仓库