DeDecms文章点击计数器的算法,一直困扰着各位站长。系统默认的算法是只要用户访问文章页面刷新一次,系统就会自动算上一个点击。当我们需要精准的统计好热门的文章时候,就无法精确的统计。遇到这类问题的时候站长会采用第三方的统计工具部署在PHP空间中,本节竞技宝竞技宝黑钱吗小编将分享一下用默认的统计机制,只是更换了一种算法来实现。

1、首先是点击进入到我们的控制面板,然后找到文件管理选项,如图所示:

1 300x178 如何让DeDecms文章点击计数器防刷新机制

2、点击进入之后找到我们站点的根目录,如图所示:

2 300x145 如何让DeDecms文章点击计数器防刷新机制

3、进入到这个目录之后找到我们的程序的路径: plus/count.php,点击编辑,如图所示:

3 300x260 如何让DeDecms文章点击计数器防刷新机制

将源文件内的代码全部替换成下列代码:

<?

$__ONLYDB = true;

require_once(dirname(__FILE__)."/../include/config_base.php");

 

session_start();  //新加入

 

if(empty($aid)) $aid="0";

$aid = ereg_replace("[^0-9]","",$aid);

if(empty($mid)) $mid="0";

$mid = ereg_replace("[^0-9]","",$mid);

 

 

 

 

if (!isset($_SESSION['c_time'.$aid]))  //  如果第一次访问,设定时间戳,并允许增加

{

$_SESSION['c_time'.$aid] = time();

 

$dsql = new DedeSql(false);

$dsql->ExecuteNoneQuery("Update dede_archives set click=click+1 where ID='$aid'");

if(!empty($mid)){

$dsql->ExecuteNoneQuery("Update dede_member set pageshow=pageshow+1 where ID='$mid'");

}

if(!empty($view)){

$row = $dsql->GetOne("Select click From dede_archives  where ID='$aid'");

echo "document.write('".$row[0]."');\r\n";

}

$dsql->Close();

exit();

 

}

elseif (time() - $_SESSION['ctime'.$aid] < 3600) // 如果在一小时内刷新页面,则不增加。按此可以设置永远不增加

{

exit();

} else {                        // 如果超过一小时,则重新计时,并允许增加

$allow_insert = true;

unset($_SESSION['ctime'.$aid]);

}

//总结:由于代码比较长,用户在更换的时候最好备份好原文件,以上代码已经过测试。

以上是竞技宝竞技宝黑钱吗独立IP空间为您带来的介绍。

本文地址:http://www.51php.com/dedecms/28507.html

喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^

阅读本文的人还阅读: