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

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

作者: 分类:PHP开发 点击: 2,261 次
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 ,这就要看自己的需求了。

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

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

或许你会感兴趣的文章:

发表评论

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

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