新聞中心
如何讓DeDecms文章點(diǎn)擊計(jì)數(shù)器防刷新機(jī)制
作者 / 無(wú)憂主機(jī) 時(shí)間 2019-10-14 09:31:19
DeDecms文章點(diǎn)擊計(jì)數(shù)器的算法,一直困擾著各位站長(zhǎng)。系統(tǒng)默認(rèn)的算法是只要用戶訪問文章頁(yè)面刷新一次,系統(tǒng)就會(huì)自動(dòng)算上一個(gè)點(diǎn)擊。當(dāng)我們需要精準(zhǔn)的統(tǒng)計(jì)好熱門的文章時(shí)候,就無(wú)法精確的統(tǒng)計(jì)。遇到這類問題的時(shí)候站長(zhǎng)會(huì)采用第三方的統(tǒng)計(jì)工具部署在PHP空間中,本節(jié)無(wú)憂主機(jī)小編將分享一下用默認(rèn)的統(tǒng)計(jì)機(jī)制,只是更換了一種算法來(lái)實(shí)現(xiàn)。 1、首先是點(diǎn)擊進(jìn)入到我們的控制面板,然后找到文件管理選項(xiàng),如圖所示: 2、點(diǎn)擊進(jìn)入之后找到我們站點(diǎn)的根目錄,如圖所示: 3、進(jìn)入到這個(gè)目錄之后找到我們的程序的路徑: plus/count.php,點(diǎn)擊編輯,如圖所示: 將源文件內(nèi)的代碼全部替換成下列代碼:
<? $__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])) ?// ?如果第一次訪問,設(shè)定時(shí)間戳,并允許增加 { $_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) // 如果在一小時(shí)內(nèi)刷新頁(yè)面,則不增加。按此可以設(shè)置永遠(yuǎn)不增加 { exit(); } else { ???????????????????????// 如果超過一小時(shí),則重新計(jì)時(shí),并允許增加 $allow_insert = true; unset($_SESSION['ctime'.$aid]); }//總結(jié):由于代碼比較長(zhǎng),用戶在更換的時(shí)候最好備份好原文件,以上代碼已經(jīng)過測(cè)試。 以上是無(wú)憂主機(jī)獨(dú)立IP空間為您帶來(lái)的介紹。
本文地址:http://www.love62.cn/dedecms/28507.html