当前位置: 首页 > news >正文

做网站每一步的是什么微信公众号软文怎么写

做网站每一步的是什么,微信公众号软文怎么写,个人设计网站论文摘要,深圳建设工程交易网站宝安闲来无事写个简易网站流量统计插件: 开发涉及到: php mysql js html效果看下图的第三行 > webpro统计|今日IP[1]|今日PV[9]|昨日IP[0]|昨日PV[0]|当前在线[4] 简易的流量统计插件,数据大致参考即可,没有高级算法,仅统计下IP和PV 不防刷&am…

闲来无事写个简易网站流量统计插件:

开发涉及到: php mysql js html效果看下图的第三行 => webpro统计|今日IP[1]|今日PV[9]|昨日IP[0]|昨日PV[0]|当前在线[4]

简易的流量统计插件,数据大致参考即可,没有高级算法,仅统计下IP和PV

不防刷,用软件数据分分钟刷上去

插件非常轻,对网站加载速度影响大概在30ms左右

6fe42620629aba17a82b39d7562f0a5e.png

一、统计数据分析

今日IP

今日PV

昨日IP

昨日PV

当前在线

二、计算方法

1、如何准确获取到客户端IP

统计IP需要获取到客户端真实的IP地址,仅js实现效果并不好。在这里我采用了[搜狐]的接口:

将该标签嵌入到网页,访问结果如下:

b372924759625c2a9e5a047af4094a84.png

var returnCitySN = {"cip": "223.241.141.73", "cid": "340000", "cname": "安徽省"};

直接给我们返回了一个 returnCitySN 对象,我们可以获得准确的IP地址、cid(cid是什么给我留言)、地区

通过如下js我们获取到ip、cnamevar ip = returnCitySN.cip;

var cname = returnCitySN.cname;

至此,IP已经拿到。

2、后端记录方法

前端将IP、cname、访问的url传输到服务端,服务器端生成time(时间戳),将以下数据存储

表wnzz_visit:id自动编号int11

ipip地址varchar128

cname地区varchar255

url访问地址varchar255

time访问时间戳int11

siteid统计站点编号int11

我们在最后又添加了一个字段 siteid,用来标记和区分不同的站点,这样可以实现多站点统计,只需要确保siteid不重复即可

表wnzz_cal:

该表的作用是,当某一天已经过去时,自动计算某一天IP和PV总值,记录在这个表中

为什么需要这个表?因为当日统计的IP和PV都是动态计算的,php从数据库读出所有访问的数据,然后再对数据进行统计,如此方法加大了服务器的开销,所以对于一些不必要的重复计算,我们计算一次,存储其即可,下次需要直接读取。id自动编号int11

timestamp某一天0点的时间戳int11

timestr某一天用字符表示,例如2019-05-05varchar255

ipsIP总数int11

pvsPV总数int11

siteid统计站点编号int11

3、如何计算IP、PV

首先需要确认 siteid 和统计事件的区间://设置北京时间为默认时区

date_default_timezone_set('PRC');

// 现在的时间戳

$now = time();

// 现在对应今日0点的时间戳

$today = strtotime(date("Y-m-d"), $now);

// 现在对应昨日0点的时间戳

$yesterday = $today - 86400;

// 现在对应明日0点的时间戳

$tomorrow = $today + 86400;

我们动态统计一下今天的数据,即 today<=time

SELECT * FROM `wnzz_visit` WHERE `time`>{$today} AND `time`

$res_t = $bean->findByX(['ip'], "wnzz_visit", ["time>{$today}", "time

从数据库读出的数据形如如下:

datas=>[

["ip"=>"127.0.0.1"],

["ip"=>"127.0.0.1"],

["ip"=>"127.0.0.1"],

["ip"=>"127.0.0.2"],

["ip"=>"127.0.0.2"],

["ip"=>"127.0.0.2"],

["ip"=>"127.0.0.3"]

]

4c4f57c2c0abf646ae8b5f454e9e4e26.png

用PHP代码表示一下/**

* @return array(ips, pvs)

*/

function cal_ipandpv($datas){

// echo "emmm
";

// print_r($datas);

// $ip['192.168.1.1'] = 10;

$ip = array();

foreach($datas as $index => $item){

if(array_key_exists($item['ip'], $ip)){

// 统计过

$ip[$item['ip']] += 1;

}else{

// 没统计过

$ip[$item['ip']] = 1;

}

}

// 累加IP和PV

$ips = 0;

$pvs = 0;

foreach($ip as $keyip => $count){

$ips++;

$pvs += $count;

}

return [$ips, $pvs];

}

4、如何计算online数

访问记录在十分钟以内的即算作在线$onlineMin = $now - 10 * 60;

直接列上SQL语句SELECT * FROM `wnzz_visit` WHERE `time`>{$onlineMin } AND `siteid`={$siteid};

三、代码实现

JS插件端

在这之前需要引用

通过这个插件我们可以在 id 为 wnzz 和 wnzz1 的div中显示返回信息

domain1改成自己服务器接口地址// https://pv.sohu.com/cityjson?ie=utf-8

var domain1 = "http://127.0.0.1/vsCode/wnzz/";

var url = window.location.href;

var siteid = 1000;

$.get(domain1 + "?ip=" + returnCitySN["cip"] + "&cname=" + returnCitySN["cname"] + "&url=" + url + "&siteid=" + siteid, function(result){

console.log(result);

});

$.get(domain1 + "?act=get&siteid=" + siteid, function(result){

$("#wnzz").text(result);

$("#wnzz1").text(result);

});

PHP后端

在这之前需要引用 Bean.class.php、Tools.class.php

下载之后直接引用即可

以下为wnzz服务端接口<?php

// ============================ //

//                              //

//        数据库参数配置         //

//                              //

// ============================ //

define("DB_HOST", "127.0.0.1");   // 数据库地址

define("DB_USER", "root");        // 数据库用户名

define("DB_PASSWD", "root");      // 数据库密码

define("DB_NAME", "wnzz");        // 数据库名

//设置北京时间为默认时区

date_default_timezone_set('PRC');

//输出当前时间

// echo date("Y-m-d H:i:s",time());  //2016-08-11 10:30:32

//获得当日凌晨的时间戳

// $today = strtotime(date("Y-m-d"),time());

require_once "./Tools.class.php";

require_once "./Bean.class.php";

/**

* ip

* cname

* url

* siteid

*/

/**

siteid

1000-1999 我的字段

*/

// 存储访客数据

if(isset($_GET['ip']) && isset($_GET['cname']) && $_GET['url'] && $_GET['siteid']){

$ip = anti_sqlin($_GET['ip']);

$cname = anti_sqlin($_GET['cname']);

$url = anti_sqlin($_GET['url']);

$siteid = (int)$_GET['siteid'];

$bean = new Bean();

// 现在的时间戳

$now = time();

// 存储

$bean->save("wnzz_visit", ["ip={$ip}", "cname={$cname}", "url={$url}", "time={$now}", "siteid={$siteid}"]);

// 获取访问记录

}elseif(isset($_GET['act']) && $_GET['act'] == 'get' && isset($_GET['siteid'])){

$siteid = (int)$_GET['siteid'];

// init

$y_ips = 0;

$y_pvs = 0;

$t_ips = 0;

$t_pvs = 0;

$online = 0;

$bean = new Bean();

// 现在的时间戳

$now = time();

// 现在对应今日0点的时间戳

$today = strtotime(date("Y-m-d"), $now);

// 现在对应昨日0点的时间戳

$yesterday = $today - 86400;

// 现在对应明日0点的时间戳

$tomorrow = $today + 86400;

// 查找昨天的记录

$res = $bean->findByX(['timestr', 'ips', 'pvs'], "wnzz_cal", ["timestamp={$yesterday}", "siteid={$siteid}"]);

if($res['status'] == 'data'){

// 有数据直接读

$y_ips = $res['data'][0]['ips'];

$y_pvs = $res['data'][0]['pvs'];

}else{

// 计算并存储

$res_m = $bean->findByX(['ip'], "wnzz_visit", ["time>={$yesterday}", "time

$datas = $res_m['data'];

$ipsandpvs = cal_ipandpv($datas);

// 存储

// $ips

// $pvs

// $yesterday

// $yesterday_timestamp

$ips = $ipsandpvs[0];

$pvs = $ipsandpvs[1];

$yesterday_timestamp = date("Y-m-d", $yesterday);

$y_ips = $ips;

$y_pvs = $pvs;

$res1 = $bean->save("wnzz_cal", ["ips={$ips}", "pvs={$pvs}", "timestamp={$yesterday}", "timestr={$yesterday_timestamp}", "siteid={$siteid}"]);

// print_r($res1);

}

// 查找今天的记录

$res_t = $bean->findByX(['ip'], "wnzz_visit", ["time>{$today}", "time

$datas_t = $res_t['data'];

$ipsandpvs_t = cal_ipandpv($datas_t);

$ips_t = $ipsandpvs_t[0];

$pvs_t = $ipsandpvs_t[1];

$t_ips = $ips_t;

$t_pvs = $pvs_t;

// 获取当前在线,10min内为在线

// 用PV计算当前在线数

$onlineMin = $now - 600;

$res_o = $bean->findByX(['ip'], "wnzz_visit", ["time>{$onlineMin}", "siteid={$siteid}"]);

$datas_o = $res_o['data'];

$ipsandpvs_o = cal_ipandpv($datas_o);

$ips_o = $ipsandpvs_o[0];

$pvs_o = $ipsandpvs_o[1];

// $t_ips = $ips_o;

$online = $pvs_o;

// $y_ips = 0;

// $y_pvs = 0;

// $t_ips = 0;

// $t_pvs = 0;

// $online = 0;

echo "webpro统计|今日IP[{$t_ips}]|今日PV[{$t_pvs}]|昨日IP[{$y_ips}]|昨日PV[{$y_pvs}]|当前在线[{$online}]";

}

/**

* @return array(ips, pvs)

*/

function cal_ipandpv($datas){

// echo "emmm
";

// print_r($datas);

// $ip['192.168.1.1'] = 10;

$ip = array();

foreach($datas as $index => $item){

if(array_key_exists($item['ip'], $ip)){

// 统计过

$ip[$item['ip']] += 1;

}else{

// 没统计过

$ip[$item['ip']] = 1;

}

}

// 累加IP和PV

$ips = 0;

$pvs = 0;

foreach($ip as $keyip => $count){

$ips++;

$pvs += $count;

}

return [$ips, $pvs];

}

function anti_sqlin($data){

$data = str_replace("'", "", $data);

return $data;

}

HTML文档页面安装

在head代码处添加、或者有的网站后台管理中留有网站统计填写等合适位置,添加如下代码

xxx/xxx.js改成自己的服务器上的JS地址

b3c232955cdd39fde2e4ecc026ad2c0e.png

然后在你需要显示统计数据的地方添加如下div标签

如果你有两处需要显示,可以修改下JS插件代码,增加一条语句即可$("#wnzz1").text(result);

插件测试

安装好后,刷新网站进行测试

f5f0e0e834cea0fa101ffd3ef00a38a5.png

安装成功!

如果想实现多用户,自己做个siteid管理即可,从而避免siteid重复导致数据混乱。

===

http://www.fp688.cn/news/144148.html

相关文章:

  • 网站语言百度搜索推广方案
  • 网站设计制作培训seo关键词
  • Python做网站 性能网站媒体推广方案
  • 飞速网站排名百度建立自己的网站
  • 个人网站建设的计划书搜索引擎优化的方法
  • 网站开发公司哪里寻找客源网络营销企业网站优化
  • 分享网站模板正规app推广
  • 阿里巴巴集团官网郑州seo优化服务
  • 武汉 开发 公司 网站建设软文发布平台排名
  • 手机网站制作报价表seo基础篇
  • 网站建设运用软件网络优化网站
  • 网站建设方案的需求分析新手如何学seo
  • 做宠物网站的工作室每日关键词搜索排行
  • 佛山网站建设企业电商平台的营销方式
  • 巩义网站建设报价足球进球排行榜
  • 美国做任务挣钱的网站网络营销评价的名词解释
  • 升降平台找企汇优做网站推广2023年中国进入一级战备状态了吗
  • 福州网站建设 找燕狂徒 04汕头网站建设方案推广
  • 淘宝网时时彩做网站是真的吗知乎关键词排名优化
  • python 网站开发 环境怎么创建网站免费建立个人网站
  • 万网制作淘宝客网站友情链接模板
  • 政府门户网站建设军事新闻
  • 如何制作营销网站网站优化系统
  • 展示类网站cms希爱力5mg效果真实经历
  • 免费生产管理erp企业seo推广的绝密诀窍曝光
  • 网站服务器 英文google下载app
  • 用数据库做动态网站今日新闻网
  • 做网站北京百度网盘网页版入口官网
  • 做设计转钱网站农业推广
  • 广东住房和建设局网站广东seo价格是多少钱