花了一段时间,总算理解了TP行为的概念,写了一个简单的防刷新的计数器,有什么不足之处,欢迎大家指正。
首先配置项目的Conf文件夹下的tags.php文件<?php <br />
return array(<br>
'view_filter' => array(<br>
'Counter'<br>
),<br>
<br>
);在项目的Behavior目录下
建立CounterBehavior.class.php文件<?php <br />
/**<br>
* 计数器行为:<br>
* <br>
*/<br>
class CounterBehavior extends Behavior <br>
{<br>
// 行为参数定义(默认值) 可在项目配置中覆盖<br>
protected $options = array(<br>
'Counter_ON' => true// 是否开启计数器<br>
);<br>
public function run(&$content)<br>
{<br>
if(C('Counter_ON'))<br>
{<br>
$file=$_SERVER['DOCUMENT_ROOT'].dirname().'/counter.txt';<br>
$hits=intval(file_get_contents($file));<br>
$nums=str_split($hits);<br>
$pic="";<br>
$imgpath=dirname().'/Public/images/counter/';<br>
foreach ($nums as $num) {<br>
$pic.="<img alt="TP行为简单例子--防刷新计数器" >";<br>
}<br>
$content = str_replace('{__Counter__}',$pic,$content);<br>
$hits++;<br>
if(!session('?counter'))<br>
{<br>
$handle=fopen($file, "w");<br>
flock($handle, LOCK_EX+LOCK_NB);<br>
fwrite($handle, $hits);<br>
flock($handle, LOCK_UN+LOCK_NB);<br>
fclose($handle);<br>
session('counter',time());<br>
}<br>
}<br>
else<br>
{<br>
$content = str_replace('{__Counter__}','',$content);<br>
}<br>
}<br>
}然后在需要使用计数器的模板文件里加上{__Counter__}即可
counter.zip
( 148.97 KB 下载:154 次 )
AD:真正免费,域名+虚机+企业邮箱=0元
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
C++高性能并发应用_C++如何开发性能关键应用
Java AI集成Deep Java Library_Java怎么集成AI模型部署
Golang后端API开发_Golang如何高效开发后端和API
Python异步并发改进_Python异步编程有哪些新改进
C++系统编程内存管理_C++系统编程怎么与Rust竞争内存安全
Java GraalVM原生镜像构建_Java怎么用GraalVM构建高效原生镜像
Python FastAPI异步API开发_Python怎么用FastAPI构建异步API
C++现代C++20/23/26特性_现代C++有哪些新标准特性如modules和coroutines
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号