码迷,mamicode.com
首页 > Web开发 > 详细

PHP记录点击数方法

时间:2016-04-21 18:34:44      阅读:267      评论:0      收藏:0      [点我收藏+]

标签:

1.第一种方法: 

$id = $_GET[‘id‘]; //获取文章ID

$sql = "UPDATE base SET hits = hits+1 WHERE id = ‘$id‘"; //数据库的执行语句

header("location: read.php?id=$id"); //跳转语句


给你思路,语句自己写..

数据库里除了题目,发表时间,内容这些你已经有的字段外,增加一个click字段,是用来记录被点击了多少次..

文章题目连接到一个count.php文件,用ID值传递..

然后连接数据库,把click中的值加1再保存,

然后用header函数跳转到文章显示页面,也是用ID值传递..

为了不给人恶意刷新,可以在count.php这个页面中加一个cookie,多少时间内点击视为一个点击..

 

2.第二种方法:

<?php
error_reporting(E_ALL);
$ROOT_PATH = ../;
include_once($ROOT_PATH . "include/config.php");
 
$update_time = 1800;//多长时间更新一次,单位是秒
 
$article_id = (isset($_GET[article_id]) && is_numeric($_GET[article_id]) && $_GET[article_id] > 0) ? intval($_GET[article_id]) : 0;//文章的ID
if ($article_id > 0) {
    $filename = $ROOT_PATH . log/click_log.txt;
    $s = ‘‘;
    if (file_exists($filename)) {
        $content = file_get_contents($filename);
        $d_ary = array();
        if ($content) {
            $ary = explode("/n", $content);
            foreach ($ary as $line) {
                $data_ary = explode(|, $line);
                if (is_numeric($data_ary[0]) && is_numeric($data_ary[1])) {
                    $d_ary[$data_ary[0]] = $data_ary[1];
                }
            }
        }
    if (array_key_exists($article_id, $d_ary)) {            
    $d_ary[$article_id] = $d_ary[$article_id]+1;//将当前的文章的点击数加1        
  } else {           
    $d_ary[$article_id] = 1;        
  }        
    foreach ($d_ary as $key => $val) {            
    $s .= $key . ‘|‘ . $val . "/n";        
    }    
} else {        
  $s .= $article_id . ‘|1‘ . "/n";//这个是初始化记录文件    
}     //写记录文件    
$fp = fopen($filename, "w");//加入锁定
if (flock($fp, LOCK_EX)) {
  // 进行排它型锁定    
  fwrite($fp, $s);    
  flock($fp, LOCK_UN); // 释放锁定
}     //fwrite($fp, $s);    fclose($fp);    @chmod($filename, 0777);     
  $last_update = file_get_contents(‘../log/last_update.txt‘);//取上一次更新的时间    
  $last_update = intval($last_update);    
    if (($last_update + $update_time) < time()) {         //以下是数据库连接操作,我用的是ADODB,你可以改成你自己的        
  require_once("adodb.inc.php");        
  $db = NewADOConnection("$DB_TYPE");        
  $db->debug = true;        
  $ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;        
    if (!$db->Connect("$DB_HOST", "$DB_USER", "$DB_PASS", "$DB_DATABASE")) {            
      exit(‘<a href="/">服务器忙,请稍候再访问</a>‘);        
    }         
    $content = file_get_contents($filename);        
    $d_ary = array();        
    if ($content) {            
      $ary = explode("/n", $content);            
        foreach ($ary as $line) {                
          $data_ary = explode(‘|‘, $line);                
            if (is_numeric($data_ary[0]) && is_numeric($data_ary[1])) {                    
              $sql = "UPDATE article SET hits=hits+" . $data_ary[1] . " WHERE id=" . $data_ary[0];                    
              $db->Execute($sql);                
            }            
        }        
     }        //点击数更新完了,将这个记录文件清空        
    $fp = fopen($filename, "w");        
    fwrite($fp, ‘‘);        
    fclose($fp);        
    @chmod($filename, 0777);         //将最后一次更新时间改为当前时间        
    $fp = fopen(‘../log/last_update.txt‘, "w");      
    fwrite($fp, time());        
    fclose($fp);        
    @chmod(‘../log/last_update.txt‘, 0777);            
    $db->Close();//关闭数据库连接    
}    
  exit();
}?>

首先在log目录下创建last_update.txt
内容是 1155163400,(这是time()函数生成的时间)

click_log文件的内容是像下面这样的:
13136|44
13104|31
23509|32
11407|5
12141|29

第一个数字代表文章的ID,第二个数字代表累积的点击数

这样做,会提高程序的执行效率,无论是动态的PHP页面还是html里,以

<script src="click.php?article_id=333"></script>

这种方法的页面,都很有效.

这个一般用于统计文章等内容的点击数的
一般静态页里,像上面这样用的(可以把我上面的程序存成click.php)
动态页里的话,可以把上面的代码做成一个包含文件,然后在你的文章中include进来,不过,要改一下这个PHP的代码,把article_id传进去.

PHP记录点击数方法

标签:

原文地址:http://www.cnblogs.com/DellHome/p/5418025.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!