Chinaz.com - 中国站长站

匿名投稿 投稿指南 RSS订阅 站长资讯通告:
搜索: 您的位置主页>精华转载>技术专题>阅读资讯:PHPWind5.0 插件开发手册

PHPWind5.0 插件开发手册

2007-07-25 14:27:54 来源:PHPWind中文网 作者:霓虹陌路 【 评论:0

一、插件专用常量/变量/函数

1)  H_P

插件根目录,用途相当于R_P等常量,为插件专用。R_P."index.php"为论坛根目录下的index.php,H_P."index.php",即指当前插件目录下的index.php文件。

2)  $basename

插件主文件,程序中任何需要引用到自身的可以用此变量代替。

3)  $hkimg

插件图片目录,插件所使用的图片存放路径,相对路径为 /BBS根目录/Hack目录/插件目录/image目录,此变量的目的在于使得插件目录更灵活,在文件中引用图片路径更简单。

4)  PrintHack

得到模板文件路径,区别于默认的PrintEot。

以上内容将为插件的目录结构,插件的程序开发提供极大的灵活性,我们倘若修改了名称或者唯一ID之后,唯一需要做的只是修改一下FTP上文件夹的名称跟唯一ID保持一致即可。备注:PHP程序忽略变量以及函数的大小写,如果本文列举的内容大小写跟实际存在出入,可以不予考虑。

二、插件目录结构,以及文件名约定规则:

举例插件名称为打工插件,唯一ID为work,那么插件的文件夹名称应该跟唯一ID保持一致,其所有文件应该存放在 hack/work目录下,以下内容将以此插件为例说明。

1)  插件根目录 hack/work目录

存放插件主要文件,包括在根目录下的文件内容如下:

a)  index.php 插件前台主文件,如果不存在此文件,插件则不显示前台界面。

b)  admin.php 插件后台主文件,如果不存在此文件,插件则无后台管理功能。

c)  sql.txt 插件安装所需要执行的SQL语句,禁止Drop PHPWind自身数据以及删除已有数据等危险操作。如果不需要执行SQL语句变动数据库,可以不存在此文件。

注意:文件中不能存在DROP或DELETE语句,否则安装插件时无法自动升级数据库。

d)  readme.txt 插件使用说明,来提供给用户相关说明文档。

e)  倘若无前台显示/后台设置等,可以没有相应的文件,如果有相应功能,则文件命名必须按照指定规则。

2)  图片目录 hack/work/image

此目录存放插件文件中所使用到的图片文件,强烈要求在文件中使用$hkimg变量来指定此目录,这样指定目录将会让文件有极大的灵活性。

3)  插件包含文件 hack/work/require

倘若插件比较大,可以把一些常用的函数写成文件放入到require文件夹。

4)  插件模板文件夹 hack/work/template

现有的插件体系规定所有的插件模板均放置在这一个目录下,不再需要分别放到两个文件夹中。

5)  缓存文件

出于文件777属性考虑,以及缓存文件的统一部署,建议插件开发者将缓存文件存储为data/bbscache 目录下(此目录已经可写,否则论坛是无法使用的), 建议缓存文件在插件使用者第一次使用的时候自动生成到data/bbscache目录下,这样将避免插件安装中频繁出现的777问题。[备注提示:一般附带缓存的文件,可内置某些默认值,然后插件完成安装之后,使用者应该进行一次设置提交来保存它所需要的设置,在这个时候设置再生成缓存文件到data/bbscache目录下一个缓存文件,能够有效的避免需要设置777的问题]

三、主要相关函数

1)  Refreshto [前台文件相关]

函数可在执行某操作之后,将页面跳转到指定的网址,附带三个参数,第一个参数为跳转的网址,第二个参数为跳转过程中提示的内容,第三个参数为跳转页面停留的时间。前两个参数必须,第三个参数可选。举例为:
refreshto("thread.php?fid=9","您的操作已成功");

2)  Showmsg [前台文件相关]

函数一般用来返回某错误信息,并终止程序的下一步操作,继而供用户返回前一页面。本函数只有一个参数,即犯错的错误提示内容。

举例为:Showmsg("您无权访问本页面");

3)  Writeover [前台后台通用]

文件写函数,本函数将指定的字符串信息写入到指定的文件中去,有两个必选参数,第一个是文件名,第二个是字符串内容。举例为:

$str="abcdefg";

writeover(D_P."data/bbscache/aa.php",$str);

4)  Char_cv [前台后台通用]

对于POST等方法传递过来的变量内容,推荐使用本函数进行处理,本函数将过滤字符串中的危险内容。提高安全性。本函数举例如下:

$str=Char_cv($str);

5)  PrintHack [前台后台通用]

函数为插件专用,用来返回一个模板的路径,作为require/include等函数的参数传递。只有两个参数,第一个为模板文件的主文件名,该参数必须,第二个参数为模板文件的扩展名(后坠),该参数可选,默认为htm。举例为:

require PrintHack("info"); 包含插件目录下的template目录下的info.htm文件。倘若要包含info.html文件,则应该为require PrintHack("info","html");

6)  Adminmsg [后台文件使用]

函数主要用于在后台操作时返回某个提示信息,函数有三个参数,第一个参数必选,为返回的信息内容,第二个参数为可选,不带此参数程序将自动返回操作前的页面,带此参数则跳转到该参数指定的页面,第三个参数为跳转页面停留时间。举例如下:

adminmsg("系统设置成功");

adminmsg("备份成功,现在继续备份下一个文件", "backup.php?step=2");

7)  Get_date [前台后台通用]

本函数用来格式化时间,包含两个参数,前者为一个10位的Unix时间戳,后者为时间的格式,后者为可选参数。建议使用本函数来格式化一个时间,在没有第二个格式参数的时候,将按照默认的年-月-日 小时:分:秒的格式来处理。

8)  PCV [前后台通用]

本函数为5.0版本新增函数,倘若您所要包含的文件中含有变量,要被包含文件使用到--b.php为被包含文件,a.php为包含文件,a.php需要包含b.php来获取某个变量的值--建议使用本函数来过滤b.php文件,来防止跨站攻击等,本函数的使用可以进一步提高安全性。举例说明:

include_once Pcv("xxxxx.php");

五、开发建议

既然是为PW开发的插件,就应该符合PW的插件标准,同时,以下建议也是保证程序准确、稳定运行的必要条件。

1)  不使用默认的getdate函数获取日期,而使用get_date函数(PW系统自带),这样将能够保持跟系统时间保持一致(PW后台的时间校正,时区等设置将会生效)。

2)  推荐使用include函数包含缓存文件,因为require可能缺少文件而产生一个致命错误--空白,而Include函数则不会有致命错误的产生。

3)  建议插件开发者按照本参考标准开发插件,并尽可能避免修改论坛自身文件,以避免倘若论坛升级之后插件失效。对于新建立的插件数据表,建议使用pw_hack_xxx格式来建立,便于区分。

4)  插件模版的书写严格遵从XHTML标准,插件中用到的Javascript尽量保证IE和Firefox下的兼容性。

PHP的日期时间函数date()

1、年-月-日

echo date('Y-m-j');

2007-02-6

echo date('y-n-j');

07-2-6

大写Y表示年四位数字,而小写y表示年的两位数字;

小写m表示月份的数字(带前导),而小写n则表示不带前导的月份数字。

echo date('Y-M-j');

2007-Feb-6

echo date('Y-m-d');

2007-02-06

大写M表示月份的3个缩写字符,而小写m则表示月份的数字(带前导0);

没有大写的J,只有小写j表示月份的日期,无前导o;若需要月份带前导则使用小写的。

echo date('Y-M-j');

2007-Feb-6

echo date('Y-F-jS');

2007-February-6th

大写M表示月份的3个缩写字符,而大写F表示月份的英文全写。(没有小写f)

大写S表示日期的后缀,比如“st”、“nd”、“rd”和“th”,具体看日期数字为何。

小结:

表示年可以用大写的Y和小写y;

表示月可以用大写F、大写M、小写m和小写n(分别表示字符和数字的两种方式);

表示日可以用小写d和小写j,大写S表示日期的后缀。

2、时:分:秒

默认情况下,PHP解释显示的时间为“格林威治标准时间”,与我们本地的时间相差8个小时。

echo date('g:i:s a');

5:56:57 am

echo date('h:i:s A');

05:56:57 AM

小写g表示12小时制,无前导0,而小写h则表示有前导0的12小时制。

当使用12小时制时需要表明上下午,小写a表示小写的“am”和“pm”,大写A表示大写的“AM”和“PM”。

echo date('G:i:s');

14:02:26

大写G表示24小时制的小时数,但是不带前导的;使用大写的H表示带前导的24小时制小时数

小结:

字母g表示小时不带前导,字母h表示小时带前导;

小写g、h表示12小时制,大写G、H表示24小时制。

3、闰年、星期、天

echo date('L');

今年是否闰年:0

echo date('l');

今天是:Tuesday

echo date('D');

今天是:Tue

大写L表示判断今年是否闰年,布尔值,为真返回1,否则为0;

小写l表示当天是星期几的英文全写(Tuesday);

而使用大写D表示星期几的3个字符缩写(Tue)。

echo date('w');

今天星期:2

echo date('W');

本周是全年中的第 06 周

小写w表示星期几,数字形式表示

大写W表示一年中的星期数

echo date('t');

本月是 28 天

echo date('z');

今天是今年的第 36 天

小写t表示当前月份又多少天

小写z表示今天是本年中第几天

4、其他

echo date('T');

UTC

大写T表示服务器的时间区域设置

echo date('I');

0

大写I表示判断当前是否为夏令时,为真返回1,否则为0

echo date('U');

1170769424

大写U表示从1970年1月1日到现在的总秒数,就是Unix时间纪元的UNIX时间戳。

echo date('c');

2007-02-06T14:24:43+00:00

小写c表示ISO8601日期,日期格式为YYYY-MM-DD,用字母T来间隔日期和时间,时间格式为HH:MM:SS,时区使用格林威治标准时间(GMT)的偏差来表示。

echo date('r');

Tue, 06 Feb 2007 14:25:52 +0000

小写r表示RFC822日期。



Tags:PHPWind   插件   开发  
责任编辑:阿小
  • 请文明参与讨论,禁止漫骂攻击。 用户名:新注册) 密码: 匿名:
    评论总数: [ 查看全部 ] 网友评论
    关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助