bob 发布于 October 4, 2006 19:35
无废话版本。以下的插件均指“可被插件管理器识别并管理的插件”,非模块插件。
1. 插件存放的位置
所有插件都存放于plugin文件夹下,并单独建立自己的文件夹。比如 plugin/mynewplugin。
2. 文件构成
*setup.php 必需,插件识别信息,如名称、描述、制作者等
*install.php 非必需,插件安装时调用的文件,可用于新建数据表,创建文件,初始化数据等
*uninstall.php 非必需,插件卸载时调用的文件,可用于删除插件生成的临时文件等
*admin.php 非必需,插件后台调用文件
*<“接口”识别字符>.php 非必需,插件运行时调用的文件(解释见后)
*其它必要的文件,如图片
所有文件如有多字节文字,需以UTF-8编码保存。
3. setup.php的文件格式
以巴巴变相册插件为例。
4. 运行方法
1. 插件存放的位置
所有插件都存放于plugin文件夹下,并单独建立自己的文件夹。比如 plugin/mynewplugin。
2. 文件构成
*setup.php 必需,插件识别信息,如名称、描述、制作者等
*install.php 非必需,插件安装时调用的文件,可用于新建数据表,创建文件,初始化数据等
*uninstall.php 非必需,插件卸载时调用的文件,可用于删除插件生成的临时文件等
*admin.php 非必需,插件后台调用文件
*<“接口”识别字符>.php 非必需,插件运行时调用的文件(解释见后)
*其它必要的文件,如图片
所有文件如有多字节文字,需以UTF-8编码保存。
3. setup.php的文件格式
以巴巴变相册插件为例。
<?php
$info['name']="bababian"; //插件识别名,必需是拉丁字母或数字,必需与插件所在文件夹同名
$info['author']="Bob"; //插件作者
$info['intro']="巴巴变相册"; //插件作用描述
$info['version']="1.0"; //插件自身的版本
$info['authorurl']="http://www.bo-blog.com"; //插件开发者网站
$info['blogversion']="2.0.1"; //插件可正常运行的最低blog程序版本
$info['register']="page"; //插件调用的“接口”识别字符的名字
?>
4. 运行方法
bob 发布于 April 9, 2006 13:49
前一段时间刚看到keso与phpx.com事件,这几天就相继有北辰和swearl 反应被人用Trackback骚扰了。我这里虽然大体平静,但也偶然会有几个spammer光顾。看起来,继评论、留言本之后,广大spammer又发现新的战场了。
最容易被Trackback Spam利用的一点是Trackback URL的连续性,phpx的老大就是利用了这一点。大多数blog程序在设计的时候,Trackback ID都是连贯的,举例如下所示:
http://127.0.0.1/test/tb.php?t=1
http://127.0.0.1/test/tb.php?t=2
http://127.0.0.1/test/tb.php?t=3
http://127.0.0.1/test/tb.php?t=4
显然这样的设计,对于自动发送spam的程序来说真是太爽了。
现在的问题就是怎么去改进。改动ID的规则,改连续为随机,这是个解决方法。但是这样的改动不算小。而且,连续性的ID之所以受到欢迎是有原因的,比如管理起来很方便,比如可以利用SQL现成的auto_increment生成等。所以,最好能在不变动ID的情况下防范自动spam。
那就只能给Trackback加上一个“验证码”。在原有的trackback地址之外添加一个参数,并在接受trackback时验证。
我现在的做法是:取日志的ID,再取日志发布时间的Unix时间戳记,两者连接后作md5计算,截取md5字串的开头一部分作为验证码。PHP程序大致如下:
trackback的地址变成:
http://127.0.0.1/test/tb.php?t=1&extra=400e6
http://127.0.0.1/test/tb.php?t=2&extra=fa933
http://127.0.0.1/test/tb.php?t=3&extra=349d2
……
如果是防范自动推导Trackback地址并发送spam的程序,那么至此已经可以解决问题了。我想大部分spam都是这样的程序发送的。
当然,有可能魔高一丈。比如说在知道了验证码的算法后,spam程序依然可以从rss等地方提取出时间和ID这两个值来,自动推算出验证码。不过我想暂时地,不会有那么无聊的人士做这样的事情的。而且对策也不是没有。我们可以自设一个密码字符,加入到被md5计算的字符串中去。不过(-_-)spammer实在没辙了还可以直接上你的网站“采集”trackback地址啊。这个怎么解决呢?好吧,如果真有那么一天,我只能用javascript来生成地址了……(至于么......)
最容易被Trackback Spam利用的一点是Trackback URL的连续性,phpx的老大就是利用了这一点。大多数blog程序在设计的时候,Trackback ID都是连贯的,举例如下所示:
http://127.0.0.1/test/tb.php?t=1
http://127.0.0.1/test/tb.php?t=2
http://127.0.0.1/test/tb.php?t=3
http://127.0.0.1/test/tb.php?t=4
显然这样的设计,对于自动发送spam的程序来说真是太爽了。
现在的问题就是怎么去改进。改动ID的规则,改连续为随机,这是个解决方法。但是这样的改动不算小。而且,连续性的ID之所以受到欢迎是有原因的,比如管理起来很方便,比如可以利用SQL现成的auto_increment生成等。所以,最好能在不变动ID的情况下防范自动spam。
那就只能给Trackback加上一个“验证码”。在原有的trackback地址之外添加一个参数,并在接受trackback时验证。
我现在的做法是:取日志的ID,再取日志发布时间的Unix时间戳记,两者连接后作md5计算,截取md5字串的开头一部分作为验证码。PHP程序大致如下:
<?php
function tbcertificate ($blogid, $pubtime) {
$str=substr(md5($blogid.$pubtime), 0, 5);
return $str;
}
?>
trackback的地址变成:
http://127.0.0.1/test/tb.php?t=1&extra=400e6
http://127.0.0.1/test/tb.php?t=2&extra=fa933
http://127.0.0.1/test/tb.php?t=3&extra=349d2
……
如果是防范自动推导Trackback地址并发送spam的程序,那么至此已经可以解决问题了。我想大部分spam都是这样的程序发送的。
当然,有可能魔高一丈。比如说在知道了验证码的算法后,spam程序依然可以从rss等地方提取出时间和ID这两个值来,自动推算出验证码。不过我想暂时地,不会有那么无聊的人士做这样的事情的。而且对策也不是没有。我们可以自设一个密码字符,加入到被md5计算的字符串中去。不过(-_-)spammer实在没辙了还可以直接上你的网站“采集”trackback地址啊。这个怎么解决呢?好吧,如果真有那么一天,我只能用javascript来生成地址了……(至于么......)
bob 发布于 March 24, 2006 19:48
由蓝景科技推出的PHP论坛程序产品,众盼已久的 BMForum 2006 正式版,于2006年3月24日正式发布。这次发布的新版本,聚集了广大用户的诸多期望,包括用户组复制、分区回收站、分版广告等实用功能,同时,也修复了较多的已知问题,包括新建论坛后顺序不正确等经常发生的问题,都在此次发布的 BMForum 2006 4.0 稳定正式版得以体现。
下载:http://www.bmforum.com/down/
本次更新包括下列内容(较 BMForum 4.0 RC1):
+ 全面打破传统分类方式 —— 主题随意贴(Tags、标签)
+ 引入先进的 AJAX 技术,普遍用于发帖和浏览
+ 根据 XHTML1.0 + CSS 标准重构程序
+ 可设置注册时需要邀请码 即类似GMail的注册方式!
+ 首页热门 Tags
+ 基于 Tags 的相关主题
+ 完善回收站/帖子审核,支持分区回收站
+ Apache、Zeus Rewrite 支持,完全虚拟 HTML 生成
下载:http://www.bmforum.com/down/
本次更新包括下列内容(较 BMForum 4.0 RC1):
+ 全面打破传统分类方式 —— 主题随意贴(Tags、标签)
+ 引入先进的 AJAX 技术,普遍用于发帖和浏览
+ 根据 XHTML1.0 + CSS 标准重构程序
+ 可设置注册时需要邀请码 即类似GMail的注册方式!
+ 首页热门 Tags
+ 基于 Tags 的相关主题
+ 完善回收站/帖子审核,支持分区回收站
+ Apache、Zeus Rewrite 支持,完全虚拟 HTML 生成
bob 发布于 March 10, 2006 20:50
之前曾经说过,侧边栏项目支持PHP代码,而不仅仅是html。但是为了保险起见,程序要求所有出现在侧边栏项目中的PHP代码全部用base64编码。以侧边模板切换器的代码为例:
这一部分,也就是被 <php></php>包围起来的部分,就是base64_encode后的php代码。
不过这样一来,改写代码和编码就显得比较麻烦。以下是我自己写的一个小程序,非常简陋,用于快速base64_encode与base64_decode。贴出来给需要的插件开发者使用。(顺便测试代码高亮功能)
以下请另存为 decodephp.php,直接打开就能用了。
<php>Z2xvYmFsICRsYW5nZnJvbnQsICR0ZW1wbGF0ZTsNCiRsYW5nZm
(中间省略)
</php>
(中间省略)
</php>
这一部分,也就是被 <php></php>包围起来的部分,就是base64_encode后的php代码。
不过这样一来,改写代码和编码就显得比较麻烦。以下是我自己写的一个小程序,非常简陋,用于快速base64_encode与base64_decode。贴出来给需要的插件开发者使用。(顺便测试代码高亮功能)
以下请另存为 decodephp.php,直接打开就能用了。
bob 发布于 February 26, 2006 15:39
1. magic_quotes_gpc=on:
\ => \\
' => \'
" => \"
2. 当 \' 、\" 插入数据库时,字符并没有变化,仍然为 ' 和 " 。因此读出时无需再次stripslashes。
例外:magic_quotes_runtime=on时。
3. preg_replace的pattern中使用 /e 修正符,则replacement传递到callback函数中的情形为:
\ => \
' => '
" => \"
4. 从数据库中读取,当magic_quotes_runtime=off时,似乎 \ => 空 ?
总结:引号和反斜杠的问题很复杂,而且因各服务器的设置不同而千变万化。
现在我的解决方法是
\ => & #92;
引号则用 htmlspecialchars ,quote_style设置为 ENT_QUOTES。
希望SP1版本中贴代码的问题能够解决。
\ => \\
' => \'
" => \"
2. 当 \' 、\" 插入数据库时,字符并没有变化,仍然为 ' 和 " 。因此读出时无需再次stripslashes。
例外:magic_quotes_runtime=on时。
3. preg_replace的pattern中使用 /e 修正符,则replacement传递到callback函数中的情形为:
\ => \
' => '
" => \"
4. 从数据库中读取,当magic_quotes_runtime=off时,似乎 \ => 空 ?
总结:引号和反斜杠的问题很复杂,而且因各服务器的设置不同而千变万化。
现在我的解决方法是
\ => & #92;
引号则用 htmlspecialchars ,quote_style设置为 ENT_QUOTES。
希望SP1版本中贴代码的问题能够解决。




