1. 程式人生 > >php統計網站/html頁面瀏覽訪問次數程式

php統計網站/html頁面瀏覽訪問次數程式

本文章來給大這介紹了php自己寫的一些常用的網站統計程式碼寫法,用無資料庫的與使用資料庫及html靜態頁面瀏覽資次數統計程式碼,大家可進入參考。

例項1

直接使用txt檔案進行統計的程式碼

 程式碼如下 複製程式碼

<?php
session_start();//定義session,同一IP登入不累加
$filepath = 'count.txt';
if ($_SESSION['temp'] == '')//判斷$_SESSION[temp]的值是否為空,其中的temp為自定義的變數
{
 if (!file_exists($filepath))//檢查檔案是否存在,不存在剛新建該檔案並賦值為0
 {
  $fp = fopen($filepath,'w');
  fwrite($fp,0);
  fclose($fp);
  counter($filepath);
 }else
 {
  counter($filepath);
 }
 $_SESSION['temp'] = 1;//登入以後,給$_SESSION[temp]賦一個值1
}
echo '歡迎來到懶人站長素材網站,您是本站第<font color="#FF0000">'.file_get_contents($filepath).'</font>位訪客';
//counter()方法用來得到檔案內的數字

function counter($f_value)
{
 //用w模式開啟檔案時會清空裡面的內容,所以先用r模式開啟,取出檔案內容,儲存到變數
 $fp = fopen($f_value,'r') or die('開啟檔案時出錯。');
 $countNum = fgets($fp,1024);
 fclose($fp);
 $countNum++;
 $fpw = fopen($f_value,'w');
 fwrite($fpw,$countNum);
 fclose($fpw);
}
//註釋下面一行可以實現同一IP登入不累加效果,測試時可以開啟
session_destroy();
?>

上面使用的是txt檔案,下面我們來介紹一個mysql資料庫操作例項

 程式碼如下 複製程式碼

CREATE TABLE `mycounter` (
`id` int(11) NOT NULL auto_increment,
`Counter` int(11) NOT NULL,
`CounterLastDay` int(10) default NULL,
`CounterToday` int(10) default NULL,
`RecordDate` date NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk AUTO_INCREMENT=2 ;

函式

 程式碼如下 複製程式碼
<?PHP
public function ShowMyCounter(){
//定義變數
$IsGone = FALSE;
//讀取資料
$querysql = "SELECT * FROM `mycounter` WHERE id = Ƈ' ";
$queryset = mysql_query($querysql);
$row = mysql_fetch_array($queryset);
//獲得時間量
$DateNow = date('Y-m-d');
$RecordDate = $row['RecordDate'];
$DateNow_explode = explode("-",$DateNow);
$RecordDate_explode = explode("-",$RecordDate);
//判斷是否已過去一天
if( $DateNow_explode[0] > $RecordDate_explode[0]) $IsGone = TRUE;
else if( $DateNow_explode[0] == $RecordDate_explode[0] ){
if( $DateNow_explode[1] > $RecordDate_explode[1] ) $IsGone = TRUE;
else if( $DateNow_explode[1] == $RecordDate_explode[1] ){
if( $DateNow_explode[2] > $RecordDate_explode[2] ) $IsGone = TRUE;
}else BREAK;
}else BREAK;
//根據IsGone進行相應操作
IF($IsGone) {
$RecordDate = $DateNow;
$CounterToday = 0;
$CounterLastDay = $row['CounterToday'];
$upd_sql = "update mycounter set RecordDate = '$RecordDate',CounterToday = '$CounterToday',CounterLastDay = '$CounterLastDay' WHERE id = Ƈ' ";
mysql_query($upd_sql);
}
//再次獲取資料
$querysql = "SELECT * FROM `mycounter` WHERE id = Ƈ' ";
$queryset = mysql_query($querysql);
$Counter = $row['Counter'];
$CounterToday = $row['CounterToday'];
$CounterLastDay = $row['CounterLastDay'];
if($row = mysql_fetch_array($queryset) ){
if( $_COOKIE["user"] != "oldGuest" ){
$Counter = ++$row['Counter'];
$CounterToday = ++$row['CounterToday'];
$upd_sql = "update mycounter set counter = '$Counter',CounterToday = '$CounterToday' WHERE id = Ƈ' ";
$myquery = mysql_query($upd_sql);
}
echo "總訪問量:".$Counter;
echo "
";
echo "今日流量:".$CounterToday;
echo "
";
echo "昨日流量:".$CounterLastDay;
}else{//如果資料庫為空時,相應的操作
}
}
?>

當然,需要在檔案第一行開始寫出如下程式碼:

 程式碼如下 複製程式碼

<?PHP
session_start();
if( !isset($_COOKIE["user"]) ){
setcookie("user","newGuest",time()+3600);
}else {
setcookie("user","oldGuest");
}
?>

如果是靜態頁面我們上面的方法是不可以實現的,但下面再舉一個不錯的統計例項

 程式碼如下 複製程式碼
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<mce:script language="javascript" src="count.php?aid=1&t=show" mce_src="count.php?aid=1&t=show"></mce:script>
<mce:script language="javascript" src="count.php?aid=1" mce_src="count.php?aid=1"></mce:script>
</head>
<body>
 <h1>php統計靜態html頁面瀏覽訪問次數程式碼</h1>
 <hr>
</body>
</html>

count.php程式碼

 程式碼如下 複製程式碼

<?php
    $aid  = isset( $_GET['aid'] )?$_GET['aid']:'';
    $t = isset( $_GET['t'] )?$_GET['t']:'';
 if(intval( $aid )){
  if( $t =='show' ){
    echo "document.write('這裡是顯示瀏覽次數,可以從資料庫讀出來');";
  }
  else{
    $conn = mysql_connect('localhost','root','root') ;
    $sql = "Update count set click_num = click_num+1 where aid ='$aid'";
    mysql_db_query('db_test',$sql,$conn);
  }
 }
?>

資料庫

 程式碼如下 複製程式碼

--
-- 表的結構 `count`
--
CREATE TABLE IF NOT EXISTS `count` (
  `id` int(11) NOT NULL auto_increment,
  `aid` int(11) default NULL,
  `click_num` int(11) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk AUTO_INCREMENT=2 ;