• wordpress CMS主题:ssmay主题wordpress CMS主题:ssmay主题
  • 首页 > PHP开发 > thinkphp生成前台静态页面后,如何更新前台文章点击数?

    thinkphp生成前台静态页面后,如何更新前台文章点击数?

    作者: 分类:PHP开发 点击: 2,642 次
    wordpress CMS主题:ssmay主题

      精通thinkphp或php的同仁都知道,动态统计和获取文章点击数是非常简单的,只需要每次进入页面时就给文章点击数添加1,然后再从数据库调出这个点击数就可以 了。但是,如果通过thinkphp把前台动态页面生成静态文件后,这些静态页面的内容就是死的,你进多少次文章页面,点击数始终是当初生成静态时的那个数。那么,如果想在静态页面上也能随时更新这个文章点击数,该怎么办呢?下面,高时银博客介绍一种方法——ajax调用。

      thinkphp生成前台静态页面后,如何更新前台文章点击数?

      第一步:给点击数添加 class 或 id ,如:

      <li>
      <span>点击:</span>
      <span class="post_click">{$posts.post_click}</span>
      </li>

      这里是 class="post_click",这个在使用ajax时会用用。

      第二步:在文章页面引用jquery,代码如下:

      <script type="text/javascript" src="/Public/js/jquery_min_1_7.js"></script>

      这里是引用了jquery1.7版,其它版本也可以。这里引用jquery,是因为下面我使用的是 jquery 调用ajax。如果你是纯JS调用ajax,就不需要引用jquery了。

      第三步:ajax传递数据:

      $(function(){
      //浏览文章时,文章点击统计
      var title = $("h1").text(); //获取文章标题
      $.ajax({
      url:"/s/post_num.php",
      type:"POST",
      data:{title:title},
      success:function(response){
      $(".post_click").text(response); //将php返回的数据添加到 页面中
      }
      });
      })

      我这里是先通过Jquery获取到文章的标题,然后再把标题数据以 post 方式传递到 /s/post_num.php 的文件中,这个post_num.php文件就是文章点击统计处理文件。

      第四步:处理文章点击统计和返回数据给 ajax :

      在thinkphp网站根目录下创建一个名为 s 的文件夹,在这个文件夹下创建一个 post_num.php文件,然后 文章点击统计数的更新代码和获取点击数的代码,如下:

      //文章点击统计

      include "../../_data/data.php"; //数据库信息,服务器地址、数据库名、用户名、密码

      $title = isset($_POST["title"])?$_POST["title"]:""; //接收 ajax传递过来的标题数据

      //连接数据库
      $conn = @mysql_connect(DATA_URL,DATA_USER,DATA_PASS) or die("数据库连接失败");
      @mysql_select_db(DATA_ADMIN) or die("选择数据库失败".mysql_error());
      @mysql_query("set names utf8");

      //记录关键词查询次数
      $result = mysql_query("select * from post where post_title='".$title."'");

      if($res = mysql_fetch_array($result)){
      $count = $res["post_click"]; //获取文章原点击率
      $id = $res["post_id"];

      $cookie_name = "post_name".$id; //cookie名
      $cookie_val = "post_name".$id; //cookie值
      if(empty($_COOKIE[$cookie_name])){//如果cookie名不存在,就添加一次点击
      setcookie($cookie_name,$cookie_val,time()+1800);
      mysql_query("update post set post_click=(post_click+1) where post_id=$id"); //原点击率 + 1
      }
      }

      mysql_free_result($result);
      mysql_close($conn);

      echo $count; //返回统计数

      当然,我这里对每个用户对文章的点击做了处理,以cookie来记录用户是否浏览过这篇文章,如果浏览过这篇文章,则在1800秒内再次浏览这篇文章时不作统计累加,当然,如果想让同一用户在一天之内不重复累加,可以将cookie过期时间修改成1天,即 60*60*24 ,这就要看自己的需求了。



      QQ二维码

    文章作者:高时银博客
    本文地址:http://wanlimm.com/77201608195137.html
    版权所有 © 转载时必须以链接形式注明作者和原始出处!

    上一篇:
    下一篇:
    wordpress CMS主题:ssmay主题

    或许你会感兴趣的文章:

    一条回应:“thinkphp生成前台静态页面后,如何更新前台文章点击数?”

    1. ashdz说道:

      来拿点积分,感谢提供

    发表评论

    电子邮件地址不会被公开。 必填项已用*标注

    This site uses Akismet to reduce spam. Learn how your comment data is processed.