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文件,下面我们来介绍一个mysqlmysql数据库操作实例

 代码如下 复制代码

 

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 ;


解决php中Cannot send session cache limiter 的问题的方法

今天在使用php 的session 的时候,出现了以前就遇见但是又解决不了的问题,在页面上出现如下提示: 

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at E:\php\code\admin.php:1) in E:\php\code\logolist\adminlogo.php on line 2 

上网搜了一下,有人说是因为在session_start(); 语句之前有其他的html代码,但是我的session_start(); 已经在做前面了。 
还有的说是因为没有设置session 保存路径,需要修改php.ini中的session.save_path = "C:/phpsession" [后边的路径自己设置,并且要保证存在。php.ini 文件一般应位于系统盘/Windows 目录下面] 

但是我做如上设置之后还是会有这个提示。后来经过反复测试,终于解决问题。 
解决办法: 
修改php.ini中的session.auto_start = 0 为 session.auto_start = 1 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值