php统计IP PV和今日访问量

作者 :
免费
  • 正文
  • php统计IP方法:

    php引用,在wordpress主题中

    $getroot=$_SERVER['DOCUMENT_ROOT'];

    require_once("$getroot/countstart.php");

    function getIpAddress() { // 取得当前用户的IP地址
    	$ip = '127.0.0.1';
        if(isset($_SERVER)){
            if(isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
                $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
            }else if(isset($_SERVER["HTTP_CLIENT_IP"])) {
                $ip = $_SERVER["HTTP_CLIENT_IP"];
            }else{
                $ip = $_SERVER["REMOTE_ADDR"];
            }
        }else{
            if(getenv("HTTP_X_FORWARDED_FOR")){
                $ip = getenv("HTTP_X_FORWARDED_FOR");
            }else if(getenv("HTTP_CLIENT_IP")) {
                $ip = getenv("HTTP_CLIENT_IP");
            }else{
                $ip = getenv("REMOTE_ADDR");
            }
        }
        return $ip;
    }
    function writeover($filename, $data, $method = 'w', $chmod = 0) {
    	$handle = fopen ( $filename, $method );
    	! handle && die ( "文件打开失败" );
    	flock ( $handle, LOCK_EX );
    	fwrite ( $handle, $data );
    	flock ( $handle, LOCK_UN );
    	fclose ( $handle );
    	$chmod && @chmod ( $filename, 0777 );
    }
    function count_online_num($time, $ip) {
    	$fileCount = './count.txt';
    	$count = 0;
    	$gap = 900; // 15分钟页面不刷新清空对应IP
    	if (! file_exists ( $fileCount )) {
    		$str = $time . "\t" . $ip . "\r\n";
    		writeover ( $fileCount, $str, 'w', 1 );
    		$count = 1;
    	} else {
    		$arr = file ( $fileCount );
    		$flag = 0;
    		foreach ( $arr as $key => $val ) {
    			$val = trim ( $val );
    			if ($val != "") {
    				list ( $when, $seti ) = explode ( "\t", $val );
    				if ($seti == $ip) {
    					$arr [$key] = $time . "\t" . $seti;
    					$flag = 1;
    				} else {
    					$currentTime = time ();
    					if ($currentTime - $when > $gap) {
    						unset ( $arr [$key] );
    					} else {
    						$arr [$key] = $val;
    					}
    				}
    			}
    		}
    		if ($flag == 0) {
    			array_push ( $arr, $time . "\t" . $ip );
    		}
    		$count = count ( $arr );
    		$str = implode ( "\r\n", $arr );
    		$str .= "\r\n";
    		writeover ( $fileCount, $str, 'w', 0 );
    		unset ( $arr );
    	}
    	return $count;
    }
    $time = time ();
    $ip = getIpAddress ();
    $online_num = count_online_num ( $time, $ip );
    echo $online_num;

    访问PV、今日访问量、在线人数使用方法:

    javascript引用:

    <script src="count.php"></script>
    
    class minicount
    {
    	var $dataPth;
    	function __construct($dataPth = "minidata/")
    	{
    		$this->dataPath = $dataPth;
    	}
    	//解决PHP4不支持__construct问题
    	function minicount($dataPth = "minidata/")
    	{
    		$this->dataPath = $dataPth;
    	}
    	function diplay($format="a%t%y%m%l%"){
    		//echo $format;
    		$this->updateCount($this->dataPath.$this->getMainFileName());		//更新总流量
    		$this->updateCount($this->dataPath.$this->getTodayFileName());		//更新今天流量
    		$this->updateCount($this->dataPath.$this->getMonthFileName());		//更新今月流量
    		$search = array("'a%'i",
    			"'t%'i",
    			"'y%'i",
    			"'m%'i",
    			"'l%'i",
    		);
    		$replace = array($this->getCount($this->dataPath.$this->getMainFileName()),
    			$this->getCount($this->dataPath.$this->getTodayFileName()),
    			$this->getCount($this->dataPath.$this->getYesterdayFileName()),
    			$this->getCount($this->dataPath.$this->getMonthFileName()),
    			$this->getCount($this->dataPath.$this->getLastMonthFileName())
    		);
    		echo preg_replace ($search, $replace, $format);
    	}
    	function updateCount($f)
    	{
    		//echo $this->dataPath;
    		$handle = fopen($f, "a+") or die("找不到文件");
    		$counter = fgets($handle,1024);
    		$counter = intval($counter);
    		$counter++;
    		fclose($handle);
    		//写入统计
    		$handle = fopen($f, "w") or die("打不开文件");
    		fputs($handle,$counter) or die("写入失败");
    		fclose($handle);
    	}
    	function getCount($f)
    	{
    		$handle = fopen($f, "a+") or die("找不到文件");
    		$counter = fgets($handle,1024);
    		$counter = intval($counter);
    		fclose($handle);
    		return $counter;
    	}
    	function getMainFileName()
    	{
    		return "counter.txt";
    	}
    	function getYesterdayFileName()
    	{
    		return "day/".date("Ymd",strtotime('-1 day')).".txt";
    	}
    	function getTodayFileName()
    	{
    		return "day/".date("Ymd").".txt";
    	}
    	function getMonthFileName()
    	{
    		return "month/".date("Ym").".txt";
    	}
    	function getLastMonthFileName()
    	{
    		return "month/".date("Ym",strtotime('-1 month')).".txt";
    	}
    }
    //require_once(dirname(__FILE__)."/count.php");
    $c = new minicount(dirname(__FILE__)."/countdata/");
    $filename = dirname(__FILE__)."/countdata/online.txt";  //数据文件
    $cookiename = 'VGOTCN_OnLineCount';  //cookie名称
    $onlinetime = 1800;  //在线有效时间,单位:秒 (即1800等于30分钟)
    $online = file($filename); 
    $nowtime = time(); 
    $nowonline = array();
    foreach($online as $line) {
    	$row = explode('|',$line);
    	$sesstime = trim($row[1]);
    	if(($nowtime - $sesstime) <= $onlinetime) { $nowonline[$row[0]] = $sesstime; } } if(isset($_COOKIE[$cookiename])) { $uid = $_COOKIE[$cookiename]; } else { $vid = 0; do { $vid++; $uid = 'U'.$vid; } while (array_key_exists($uid,$nowonline)); setcookie($cookiename,$uid); } $nowonline[$uid] = $nowtime; $total_online = count($nowonline); if($fp = @fopen($filename,'w')) { if(flock($fp,LOCK_EX)) { rewind($fp); foreach($nowonline as $fuid => $ftime) {
    			$fline = $fuid.'|'.$ftime."\n";
    			@fputs($fp,$fline); 
    		}
    		flock($fp,LOCK_UN);
    		fclose($fp);
    	}
    }
    //$c->diplay("总浏览量:a% 人次 今天访问:t%人次 昨天访问:y%人次 今月访问:m%人次 上月访问:l%人次");
    //$c->diplay("document.writeln('总浏览量:a%人次 今天访问:t%人次 昨天访问:y%人次 当前在线人数:{$total_online}人')");
    $c->diplay("document.writeln('总浏览量:a% 人次  今日访问:t% 人次  在线人数:{$total_online} 人  开始统计日期:2020-03-04')");
    //总访问量:xxx;  总浏览量:777 人次  今日访问:  开始统计日期:2020-03-04 
    //使用方法:总浏览量:11370 人次  今日访问:48 人次  在线人数:1 人  开始统计日期:2020-03-04
    
    

    php统计IP PV和今日访问量-完美源码

    END
    如本资源侵犯了您的权益,请联系投诉邮箱admin@wmphp.com进行举报!我们将在收到邮件的1个小时内处理完毕。 本站仅为平台,发布的资源均为用户投稿或转载!所有资源仅供参考学习使用,请在下载后的24小时内删除,禁止商用! Wmphp.com(完美源码)助力正版,如您有自己的原创产品,可以联系客服投稿,代理出售! Wmphp.com(完美源码)客服QQ:136882447 Wmphp.com(完美源码)商务电话(仅对企业客户/个人用户):15120086569 (微信同步) 请注意:本站不提供任何免费的技术咨询服务,为了节约时间,下载前 请确认自己会技术
    完美源码 » php统计IP PV和今日访问量
    3466+

    本站勉强运行

    3646+

    用户总数

    689+

    资源总数

    0+

    今日更新

    2024-3-11

    最后更新时间