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记录点击数方法的更多相关文章

  1. MySQL把多个字段合并成一条记录的方法

    转:http://www.111cn.net/database/mysql/71591.htm MySQL把多个字段合并成一条记录的方法 在mysql中字段合并可以使用很多函数来实现,如可以利用 GR ...

  2. paip.取当天记录的方法sql跟hql hibernate

    paip.取当天记录的方法sql跟hql hibernate #------两个方法...函数法和日期计算法.. 函数法: DATEDIFF(d,createTime,GETDATE())=0   / ...

  3. MySQL查询及删除重复记录的方法

    查询及删除重复记录的方法(一)1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断select * from peoplewhere peopleId in (select p ...

  4. MySQL删除重复记录的方法

    参考网上的方法,总结了产出重复记录的方法,欢迎交流. 参考:http://www.cnblogs.com/nzbbody/p/4470638.html 方法1:创建一个新表临时储存数据 假设我们有一个 ...

  5. 用一条SQL语句取出第 m 条到第 n 条记录的方法

    原文:用一条SQL语句取出第 m 条到第 n 条记录的方法   --从Table 表中取出第 m 条到第 n 条的记录:(Not In 版本)       *    FROM Table     id ...

  6. 【公众号系列】在SAP里查看条件记录的方法

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[公众号系列]在SAP里查看条件记录的方法   ...

  7. aop 例外通知就是记录业务方法出现错误 并保存到日志里面的功能

    aop 例外通知就是记录业务方法出现错误 并保存到日志里面的功能

  8. mysql使用GROUP BY分组实现取前N条记录的方法

    MySQL中GROUP BY分组取前N条记录实现 mysql分组,取记录 GROUP BY之后如何取每组的前两位下面我来讲述mysql中GROUP BY分组取前N条记录实现方法. 这是测试表(也不知道 ...

  9. 对于应用需要记录某个方法耗时的场景,必须使用clock_gettime传入CLOCK_MONOTONIC参数,该参数获得的是自系统开机起单调递增的纳秒级别精度时钟,相比gettimeofday精度提高不少,并且不受NTP等外部服务影响,能准确更准确来统计耗时(java中对应的是System.nanoTime),也就是说所有使用gettimeofday来统计耗时(java中是System.curre

    对于应用需要记录某个方法耗时的场景,必须使用clock_gettime传入CLOCK_MONOTONIC参数,该参数获得的是自系统开机起单调递增的纳秒级别精度时钟,相比gettimeofday精度提高 ...

随机推荐

  1. YUI Array 之some(检测|any)

    YUI原码 YUI someYArray.some = Lang._isNative(Native.some) ? function (array, fn, thisObj) { return Nat ...

  2. HTML5简单入门系列(五)

    前言 本篇将讲述HTML5的服务器发送事件(server-sent event) Server-Sent 事件 Server-Sent 事件是单向消息传递,指的是网页自动获取来自服务器的更新. 以前的 ...

  3. 超级密码(dfs)

    超级密码233 Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total S ...

  4. jQuery.data的是jQuery的数据缓存系统

    jQuery.Data源码 jQuery.data的是jQuery的数据缓存系统 jQuery.data的是jQuery的数据缓存系统.它的主要作用就是为普通对象或者DOM元素添加数据. 1 内部存储 ...

  5. position属性absolute与relative(转)

    每次要用到Position属性时,总要去搜索下,这两个属性值的区别:今天就直接复制网上的结果,以便以后多看看. Absolute,CSS中的写法是:position:absolute; 他的意思是绝对 ...

  6. display:table-cell的惊天作用,直接惊呆你!

    一 display:table-cell介绍 ... 二 用法 (1)高度不固定元素,垂直居中 ... (2)高度不固定列表元素,登高排列 ... (3)宽度不固定元素,平均分配 ...

  7. bochs 2.6安装和使用

    1.安装 Ubuntu 10.04下编译安装Bochs 2.6及问题解决 安装 https://chaoyang.blog.ustc.edu.cn/index.php/archives/124 安装具 ...

  8. C# XML序列化帮助类代码

    public static class XmlHelper { private static void XmlSerializeInternal(Stream stream, object o, En ...

  9. JS 输出对象的属性以及方法[转载]

    <script>var obj  = {attribute:1,method:function() {alert("我是函数");}}for (var i in obj ...

  10. 电子工程师名片——UFI Command,USB盘符的显示

    USB Mass Storage类规范概述        USB Mass storage Device协议即海量存储设备协议适用于硬盘,U盘等大容量存储设备.协议使用的接口端点有BulkIn.Bul ...