站长统计代码实现

前端 stat.js

// JavaScript Document
/**
 *  浏览器统计脚本
 */
var xmlHttp;
var statdomain=‘http://www.logs.com‘;
var statIdName = "logId";
function setCookie(name,value)
{
    var exp = new Date();
    exp.setTime(exp.getTime() + 24*60*60*1000);
    document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
}
//读取cookies
function getCookie(name)
{
    var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
    if(arr=document.cookie.match(reg))
        return unescape(arr[2]);
    else
        return null;
}
//删除cookies
function delCookie(name)
{
    var exp = new Date();
    exp.setTime(exp.getTime() - 1);
    var cval=getCookie(name);
    if(cval!=null)
        document.cookie= name + "="+cval+";expires="+exp.toGMTString();
}
/**
* 获取当前时间戳
*/
function getTimestamp() {
 var timestamp = Date.parse(new Date());
 return timestamp;
}
function generRandom(){
    return Math.round(Math.random() * 3000000000);
}
/**
* 生成statId
*/
function genStatId() {
 var cookieId = getTimestamp();
 cookieId = "cid" + "-" + cookieId + "-" + generRandom();
 return cookieId;
}
/**
* 设置StatId
*/
function setStatId() {
 var cookieId = genStatId();
 setCookie(statIdName, cookieId);
}
/**
* 获取StatId
*/
function getStatId() {
 var statId = getCookie(statIdName);
 if (statId != null && statId.length > 0) {
  return statId;
 } else {
  setStatId();
  return getStatId();
 }
}
/**
 * 获取UA
 */
function getUA() {
  var ua = navigator.userAgent;
  if (ua.length > 250) {
    ua = ua.substring(0, 250);
  }
  return ua;
}
function getBrower() {
  var ua = getUA();
  if (ua.indexOf("MSIE") >= 0) {
    var ver=ua.match(/MSIE ([\d.]+)/)[1];
    return "IE("+ver+")";
 }
 //Maxthon
 else if (ua.indexOf("Maxthon") >= 0) {
    var ver=ua.match(/Maxthon\/([\d.]+)/)[1];
    return "Maxthon("+ver+")";
 }
 //firefox
 else if (ua.indexOf("Firefox") >= 0) {
    var ver=ua.match(/Firefox\/([\d.]+)/)[1];
    return "Firefox("+ver+")";
 }
 //Chrome
 else if(ua.indexOf("Chrome") >= 0){
     var ver=ua.match(/Chrome\/([\d.]+)/)[1];
     return "Chrome("+ver+")";
 }
 //Opera
 else if(ua.indexOf("Opera") >= 0){
     var ver=ua.match(/Opera.([\d.]+)/)[1];
     return "Opera("+ver+")";
 }
 //Safari
 else if(ua.indexOf("Safari") >= 0){
     var ver=ua.match(/version\/([\d.]+)/)[1];
     return "Safari("+ver+")";
 }else{
     return "ot";     
 }
}
/**
 * 获取浏览器语言
 */
function getBrowerLanguage() {
  var lang = navigator.browserLanguage;
  return lang != null && lang.length > 0 ? lang : "";
}
/**
 * 获取操作系统
 */
function getPlatform() {
  return navigator.platform;
}
/**
 * 获取页面title
 */
function getPageTitle() {
  return document.title;
}
/**
 * 构造XMLHttpRequest对象
 *
 * @return
 */
function createXMLHttpRequest() {  
  if (window.ActiveXObject) {  
    xmlHttp = new ActiveXObject(‘Microsoft.XMLHTTP‘);  
  } else if (window.XMLHttpRequest) {  
    xmlHttp = new XMLHttpRequest();  
  }  
}
var logrand=generRandom();//同一用户页面记录id
function InitLE(stat_param,isclose) {
  var UA = encodeURIComponent(getUA());
  var REFURL = encodeURIComponent(document.referrer);
  var URL = encodeURIComponent(document.URL);
  var ScreenX = screen.width;
  var ScreenY = screen.height;
  var OS = getPlatform();
  var Brower = getBrower();
  var BrowerLanguage = getBrowerLanguage();
  var PageTitle = encodeURIComponent(getPageTitle());
  var Action = statdomain+"/stat.gif?rd="+generRandom();
  //var Action = statdomain+"/api.php?op=addlogs&rd="+generRandom();
  var CookieId = getStatId();
  var p = stat_param + "&isclose="+ isclose +"&stat_cookieid=" + CookieId + "&stat_randid=" + logrand +"&stat_ua=" + UA + "&stat_referurl="
      + REFURL + "&stat_url=" + URL + "&stat_os=" + OS + "&stat_browser=" + Brower + "&stat_desc=" + PageTitle;
  createXMLHttpRequest();
  xmlHttp.open("GET", Action+‘&‘+p,false);
  xmlHttp.send(null); //设置为发送给服务器数据
 
}
InitLE(stat_param,0);
window.onbeforeunload = function(){
   InitLE(stat_param,1);
}

后端php代码

<?php
defined(‘IN_LOGS‘) or exit(‘No permission resources.‘);
ignore_user_abort(TRUE);
logs_base::load_sys_class(‘Log‘, ‘‘, 0);
$Log = Log::factory(‘file‘, ROOT_PATH . ‘api‘ . DIRECTORY_SEPARATOR .‘logs‘.DIRECTORY_SEPARATOR.‘addlogs‘.DIRECTORY_SEPARATOR . date(‘Ymd‘) . ‘.log‘, ‘Request‘, array(‘timeFormat‘ => ‘%Y-%m-%d %H:%M:%S‘));
//set_time_limit(0);//取消脚本执行延时上限    
$db=logs_base::load_model();
$allow_origin=array();
$sites=$db->select(‘site‘,‘*‘);
foreach($sites as $k=>$v){
    $allow_origin[]=$v[‘siteurl‘];
}
$origin = isset($_SERVER[‘HTTP_ORIGIN‘])? $_SERVER[‘HTTP_ORIGIN‘] : ‘‘;
$Log->log(‘origin:‘ .$origin);
if(in_array($origin, $allow_origin)){
    header(‘Access-Control-Allow-Origin:‘.$origin);  
    header(‘Access-Control-Allow-Credentials:true‘);
}
$Log->log(‘SRART DATA‘);
$post=$_REQUEST;
header("Content-type: image/gif");
$imgpath=ROOT_PATH.‘stat.gif‘;
echo file_get_contents($imgpath);
if($origin && $origin!=‘http://‘.SITE_URL && !in_array($origin,$allow_origin)){
    exit();    
}
if($post){
    $prex=‘stat_‘;
    $Log->log(‘POST DATA:‘ .array2string($post));
    $key=logs_base::load_config(‘system‘, ‘auth_key‘);
    $decode=sys_auth($post[$prex.‘ld‘], ‘DECODE‘,$key);
    if(!in_array($decode,$allow_origin)){
        exit();//非法请求!
    }
    $siteid=0;
    foreach($sites as $k=>$v){
        if($v[‘siteurl‘]===$decode){
            $siteid=$v[‘id‘];
            break;
        }
    }
    if(!$siteid)exit();//‘非法请求!‘
    $gifo=logs_base::load_sys_class (‘get_gust_info‘);
    $shortname=$db->get(‘site‘,‘shortname‘,array(‘id‘=>$siteid));
    if(!$shortname)exit();//没有设置记录表
    $loglist_table=‘loglist_‘.$shortname;
    $fields=array(‘actid‘,//‘功能点id‘
        ‘doids‘,//‘操作对象id‘
        ‘dodesc‘,//‘操作对象描述‘
        ‘system‘,//‘操作系统‘
        ‘intime‘,//‘进入时间‘
        ‘outtime‘,//‘离开时间‘
        ‘standtime‘,//‘停留时间‘
        ‘browser‘,//‘浏览器‘,
        ‘ip‘,//‘ip‘,
        ‘userid‘,//‘用户id‘
        ‘companyname‘,//‘公司名称‘
        ‘url‘,//‘当前url地址‘
        ‘referurl‘,//‘来源url‘
        ‘desc‘,//‘描述‘,
        ‘cookieid‘,
        ‘randid‘
    );
    $data=array();
    foreach($fields as $field){
        if(isset($post[$prex.$field]) && $post[$prex.$field])$data[$field]=$post[$prex.$field];
    }
    $Log->log(‘do table:‘ .$loglist_table);
    if($data){
        if(!isset($data[‘intime‘]) || !$data[‘intime‘])$data[‘intime‘]=time();
        if(!isset($data[‘system‘]) || !$data[‘system‘])$data[‘system‘]=$gifo->GetOs();//操作系统
        if(!isset($data[‘browser‘]) || !$data[‘browser‘])$data[‘browser‘]=$gifo->GetBrowser();//浏览器类型
        if(!isset($data[‘ip‘]) || !$data[‘ip‘])$data[‘ip‘]=$gifo->Getip();
        if(!isset($data[‘address‘]) || !$data[‘address‘])$data[‘address‘]=$gifo->GetAddress();
        if(!isset($data[‘referurl‘]) || !$data[‘referurl‘])$data[‘referurl‘]=HTTP_REFERER;
        
        if($post[‘isclose‘] && $data[‘cookieid‘] && $data[‘randid‘]){
            $Log->log(‘update table:‘ .$data[‘cookieid‘].‘|‘.$data[‘randid‘]);
            $preinfo=$db->get($loglist_table,array(‘id‘,‘intime‘),array(‘cookieid‘=>$data[‘cookieid‘],‘randid‘=>$data[‘randid‘],‘ip‘=>$data[‘ip‘],‘outtime‘=>0));
            if($preinfo){
                $outtime=time();
                $standtime=$outtime-$preinfo[‘intime‘];
                $db->update($loglist_table,array(‘outtime‘=>$outtime,‘standtime‘=>$standtime),array(‘id‘=>$preinfo[‘id‘]));
                $Log->log(‘END DATA‘);
                exit();    
            }
        }
        $Log->log(‘insert DATA:‘ .array2string($data));
        $db->insert($loglist_table,$data);
    }
    $Log->log(‘END DATA‘);
}
?>

时间: 2024-12-24 07:36:07

站长统计代码实现的相关文章

cnzz站长统计代码

<script src="https://s95.cnzz.com/z_stat.php?id=1260576493"></script> <script src="https://c.cnzz.com/core.php?web_id=1260576493&t=z"></script> <script> var x = document.getElementsByTagName('a'); for

javascript实现的网站访问量统计代码实例

javascript实现的网站访问量统计代码实例: 作为一个网站的管理员或者说站长,都希望知道到底有多少人访问了网站,这个时候就需要有一个统计功能来满足需要,当然功能比较单一和简单,如果想要强大的统计效果,那最好还是使用现在比较成熟的功统计工具,比如站长统计或者腾讯统计等等. 代码如下: <script type="text/javascript"> var caution=false function setCookie(name,value,expires,path,d

隐藏&quot;站长统计&quot;图标

隐藏"站长统计"图标 <div id="stat"><script language="javascript">document.all.stat.style.display="none";</script><script src='http://s75.cnzz.com/stat.php?id=5235053&web_id=52504353' language='JavaSc

统计代码陷阱之无形中影响了网速

http://www.yilingsj.com/xwzj/2016-08-30/435.html 说起网站统计代码,稍微有过了解的看官肯定会想起一堆统计平台,例如:百度统计.51.la统计.友盟统计等等.而这些统计代码中也是存在陷阱的哦! 一.回顾优化网页常识 通常来说,我们会将js代码置于闭合的</body>前,因为这样做的好处就是:网页是从上往下进行加载的,js放最下面是最后加载,这样可以提升打开网页的速度. 虽然道理看官都懂,不就是将js放最下面嘛,有什么好说的.可看官真的懂??? 二.

如何在B2C电子商务网站后台添加CNZZ统计代码(转)

CNZZ作为网站流量数据统计分析工具的一种,和百度统计工具类似,同样也是用于查看分析网站所有流量数据来源的一种站长工具,当然商家可根据自己的习惯在B2C电子商务网站后台添加相应的数据统计代码来管理您的网站.具体设置方式如下: 第一步:获取CNZZ数据统计代码. 1:登录CNZZ数据统计平台(http://www.cnzz.com/),没有账号则需先注册一个账号再登录. 如下图: 2:登录成功后,在添加站点页面中输入网站的名称,域名及相关信息后,点击“确认添加站点”按钮. 如下图: 3:进入获取代

Visual Studio统计代码行数

Visual Studio统计代码行数 按[Ctrl+Shift+F]弹出查找窗口(不统计以#号开头.以/开头的代码和空行) 1.输入  :b*[^:b#/]+.*$ 2.选择使用正则表达式 3.查找文件类型,*.cs多种类型用分号(;)隔开 点击查找全部(查找结果如下)

VS统计代码行数 CTRL+SHIFT+F

1.CTRL+SHIFT+F (Find in files),打开查找功能(如果打不开查看本文最后)2. 勾选 使用:正则表达式,3. 搜索内容: ^:b*[^:b#/]+.*$ #开头和/开头或者空行都不计入代码量. ^:b*[^:b#/*]+.*$ *开头和#开头和/开头或者空行都不计入代码量. 4. 最后一行就是代码行数了. 匹配行:    匹配文件:    合计搜索文件: ----------------------------------------------------------

[转]Linux统计代码行数

wc -l *.c *.h 就可以知道当前目录下的所有c 和 h 文件的行数的详细信息.很不错 如果要递归,可以配合其他命令一起使用 当前目录及子目录: find . -name *.c |xargs wc -l find . -name *.cpp | xargs wc -l find . -name *.h |xargs wc -l 想一下子 ,或许简单的可以 使用重定向技术 使用 find -name "*.c">/tmp/file.list ;find -name &qu

统计代码执行时间,使用Stopwatch和UserProcessorTime的区别

当我们需要统计一段代码的执行时间,首先想到的可能是Stopwatch类.在这里,先暂不使用Stopwatch,自定义一个统计代码执行时间的类,大致需要考虑到: 1.确保统计的是当前进程.当前线程中代码的执行时间.2.在统计执行过程中,不允许有垃圾回收.即在统计代码执行时间之前,就让GC完成垃圾回收. 举例:统计显示一个数组元素所消耗的时间 class Program { static void Main(string[] args) { int[] arrs = new int[10000];