迅睿CMS框架是一款PHP8高性能·简单易用的CMS开源开发框架,基于MIT开源许可协议发布,免费且不限制商业使用,是免费开源的产品,以万端互联为设计理念,支持的微信公众号、小程序、APP客户端、移动端网站、PC网站等多终端式管理系统。
联系官方销售客服
1835022288
028-61286886
页面默认的阅读数,是根据ip来判断的,一个ip只能计算一次,请问怎么把这个限制取消?就是不限制ip增加阅读计数。
function dr_show_hits($id, $dom = "", $dir = MOD_DIR) { $is = $dom; !$dom && $dom = "dr_show_hits_{$id}"; $html = $is ? "" : "<span id=\"{$dom}\">0</span>"; return $html."<script type=\"text/javascript\"> $.ajax({ type: \"GET\", url:\"".ROOT_URL."index.php?s=api&c=mymodule&siteid=".SITE_ID."&app=".$dir."&m=hits&id={$id}\", dataType: \"jsonp\", success: function(data){ if (data.code) { $(\"#{$dom}\").html(data.msg); } else { dr_tips(0, data.msg); } } }); </script>"; }
<?php namespace Phpcmf\Controllers\Api; // 模块ajax操作接口 class Mymodule extends \Phpcmf\Common { private $siteid; private $dirname; private $tablename; protected $content_model; public function __construct(...$params) { parent::__construct(...$params); // 初始化模块 $this->siteid = (int)\Phpcmf\Service::L('input')->get('siteid'); !$this->siteid && $this->siteid = SITE_ID; $this->dirname = dr_safe_replace(\Phpcmf\Service::L('input')->get('app')); if (!$this->dirname || !dr_is_app_dir(($this->dirname))) { $this->_msg(0, dr_lang('模块目录[%s]不存在', $this->dirname)); exit; } $this->tablename = $this->siteid.'_'.$this->dirname; $this->content_model = \Phpcmf\Service::M('Content', $this->dirname); $this->_module_init($this->dirname, $this->siteid); } /** * 阅读数统计 */ public function hits() { $id = (int)\Phpcmf\Service::L('input')->get('id'); if (!$id) { $this->_jsonp(0, dr_lang('阅读统计: id参数不完整')); } $data = \Phpcmf\Service::M()->db->table($this->tablename)->where('id', $id)->select('hits,updatetime')->get()->getRowArray(); if (!$data) { $this->_jsonp(0, dr_lang('阅读统计: 模块内容不存在')); } $plus = defined('IS_HITS_PLUS') && is_numeric(IS_HITS_PLUS) ? intval(IS_HITS_PLUS) : 1; if (!$plus) { // 增量为0时原样输出 $this->_jsonp(1, $data['hits']);exit; } $hits = (int)$data['hits'] + $plus; // 更新主表 \Phpcmf\Service::M()->db->table($this->tablename)->where('id', $id)->set('hits', $hits)->update(); // 获取统计数据 $total = \Phpcmf\Service::M()->db->table($this->tablename.'_hits')->where('id', $id)->get()->getRowArray(); if (!$total) { $total['day_hits'] = $total['week_hits'] = $total['month_hits'] = $total['year_hits'] = 0; $total['day_time'] = $total['week_time'] = $total['month_time'] = $total['year_time'] = SYS_TIME; } else { // 按类别归零 if (date('Ymd', $total['day_time']) != date('Ymd', SYS_TIME)) { $total['day_time'] = SYS_TIME; $total['day_hits'] = 0; } if (date('YW', $total['week_time']) != date('YW', SYS_TIME)) { $total['week_time'] = SYS_TIME; $total['week_hits'] = 0; } if (date('Ym', $total['month_time']) != date('Ym', SYS_TIME)) { $total['month_time'] = SYS_TIME; $total['month_hits'] = 0; } if (date('Y', $total['year_time']) != date('Y', SYS_TIME)) { $total['year_time'] = SYS_TIME; $total['year_hits'] = 0; } } // 更新到统计表 $save = [ 'id' => $id, 'hits' => $hits, 'day_hits' => $total['day_hits'] + $plus, 'day_time' => $total['day_time'], 'week_hits' => $total['week_hits'] + $plus, 'week_time' => $total['week_time'], 'month_hits' => $total['month_hits'] + $plus, 'month_time' => $total['month_time'], 'year_hits' => $total['year_hits'] + $plus, 'year_time' => $total['year_time'], ]; \Phpcmf\Service::M()->table($this->tablename.'_hits')->replace($save); // 输出 $this->_jsonp(1, $hits); } }
<?php namespace Phpcmf\Controllers\Api; /** * http://www.xunruicms.com * 本文件是框架系统文件,二次开发时不可以修改本文件 **/ // 模块ajax操作接口 class Mymodule extends \Phpcmf\Common { private $siteid; private $dirname; private $tablename; protected $content_model; public function __construct(...$params) { parent::__construct(...$params); // 初始化模块 $this->siteid = (int)\Phpcmf\Service::L('input')->get('siteid'); !$this->siteid && $this->siteid = SITE_ID; $this->dirname = dr_safe_replace(\Phpcmf\Service::L('input')->get('app')); if (!$this->dirname || !dr_is_app_dir(($this->dirname))) { $this->_msg(0, dr_lang('模块目录[%s]不存在', $this->dirname)); exit; } $this->tablename = $this->siteid.'_'.$this->dirname; $this->content_model = \Phpcmf\Service::M('Content', $this->dirname); $this->_module_init($this->dirname, $this->siteid); } public function index() { exit('module api'); } /** * 阅读数统计 */ public function hits() { $id = (int)\Phpcmf\Service::L('input')->get('id'); if (!$id) { $this->_jsonp(0, dr_lang('阅读统计: id参数不完整')); } $data = \Phpcmf\Service::M()->db->table($this->tablename)->where('id', $id)->select('hits,updatetime')->get()->getRowArray(); if (!$data) { $this->_jsonp(0, dr_lang('阅读统计: 模块内容不存在')); } $plus = defined('IS_HITS_PLUS') && is_numeric(IS_HITS_PLUS) ? intval(IS_HITS_PLUS) : 1; if (!$plus) { // 增量为0时原样输出 $this->_jsonp(1, $data['hits']);exit; } /* $name = 'module-'.md5($this->tablename).'-'.$id; if (\Phpcmf\Service::L('input')->get_cookie($name)) { $this->_jsonp(1, $data['hits']); } */ $hits = (int)$data['hits'] + $plus; // 更新主表 \Phpcmf\Service::M()->db->table($this->tablename)->where('id', $id)->set('hits', $hits)->update(); // 获取统计数据 $total = \Phpcmf\Service::M()->db->table($this->tablename.'_hits')->where('id', $id)->get()->getRowArray(); if (!$total) { $total['day_hits'] = $total['week_hits'] = $total['month_hits'] = $total['year_hits'] = $plus; } // 更新到统计表 \Phpcmf\Service::M()->table($this->tablename.'_hits')->replace([ 'id' => $id, 'hits' => $hits, 'day_hits' => (date('Ymd', $data['updatetime']) == date('Ymd', SYS_TIME)) ? $hits : $plus, 'week_hits' => (date('YW', $data['updatetime']) == date('YW', SYS_TIME)) ? ($total['week_hits'] + $plus) : $plus, 'month_hits' => (date('Ym', $data['updatetime']) == date('Ym', SYS_TIME)) ? ($total['month_hits'] + $plus) : $plus, 'year_hits' => (date('Ymd', $data['updatetime']) == date('Ymd', strtotime('-1 day'))) ? $hits : $total['year_hits'], ]); //session()->save($name, $id, 300); 考虑并发性能还是不用session了 //\Phpcmf\Service::L('input')->set_cookie($name, $id, 300); \Phpcmf\Service::M()->table($this->tablename.'_hits')->replace($save); // 输出 $this->_jsonp(1, $hits); } }
2、复制文件dayrui/Core/Controllers/Api/Module.php,到,dayrui/Core/Controllers/Api/Mymodule.php内如如下:
靠悬赏(设置悬赏)赚钱买授权 我等会试下。先谢谢了