zoukankan      html  css  js  c++  java
  • PHP记录点击数方法

    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传进去.

  • 相关阅读:
    ubuntu关闭THP
    ubuntu14安装ambari2.2
    ubuntu14安装ambari2.2
    hcatalog配置
    hcatalog配置
    java.lang.ClassNotFoundException: org.apache.struts2.dispatchet.ng.filter.StrutsPrepareAndExecuteFilter出现这个错误的解决方法
    redis连接的工具类
    案例:服务调用次数控制
    制作redis版的helloworld程序
    redis数据库通用指令
  • 原文地址:https://www.cnblogs.com/DellHome/p/5418025.html
Copyright © 2011-2022 走看看