插件安装流程
2009-10-17 14:13:00 来源:WEB开发网下述的步骤只是按照通用流程进行说明,如果与插件安装说明中的描述不符,请以插件提供者的描述为准。
- 下载所需的插件
PHPWind百款插件,集大家所爱,请下载适合您当前论坛情况的插件,并仔细阅读插件安装说明。 - 按插件安装说明修改程序、模板、上传插件
插件上传非常简单,将插件目录上传到论坛根目录下的hack文件夹下即可。 - 安装插件
上传完毕后,进入论坛后台->风格插件->插件中心,在"未安装插件"栏目下找到该插件,选择安装。 - 插件管理
进入论坛后台->风格插件->插件中心,在"已安装插件"栏目下找到该插件,开启插件、设置插件参数,开始使用该插件。
插件目录结构,以及文件名约定规则
举例插件名称为打工插件,唯一ID为work,那么插件的文件夹名称应该跟唯一ID保持一致,其所有文件应该存放在 hack/work目录下,以下内容将以此插件为例说明。
1)插件根目录 hack/work目录
存放插件主要文件,包括在根目录下的文件内容如下:
- index.php 插件前台主文件,如果不存在此文件,插件则不显示前台界面。
- admin.php 插件后台主文件,如果不存在此文件,插件则无后台管理功能。
- sql.txt 插件安装所需要执行的SQL语句,禁止Drop PHPWind自身数据以及删除已有数据等危险操作。如果不需要执行SQL语句变动数据库,可以不存在此文件。
- readme.txt 插件使用说明,来提供给用户相关说明文档。
- 倘若无前台显示/后台设置等,可以没有相应的文件,如果有相应功能,则文件命名必须按照指定规则。
2)图片目录 hack/work/image
此目录存放插件文件中所使用到的图片文件,强烈要求在文件中使用$hkimg变量来指定此目录,这样指定目录将会让文件有极大的灵活性。
3)插件包含文件 hack/work/require
倘若插件比较大,可以把一些常用的函数写成文件放入到require文件夹。
4)插件模板文件夹 hack/work/template
不同于5.0之前的版本,所有模板均放置到template下,前台放置于template/wind 后台放置于template/admin,而现有的插件体系规定所有的插件模板均放置在这一个目录下,不再需要分别放到两个文件夹中。
5)缓存文件
出于文件777属性考虑,以及缓存文件的统一部署,建议插件开发者将缓存文件存储为data/bbscache 目录下(此目录已经可写,否则无法使用), 同时,出于进一步的为插件使用者着想,建议缓存文件使用程序生成,来避免第一次使用插件时,因为没有缓存文件或者缓存文件不可写而导致的错误--我们必须 考虑到,部分用户不熟悉电脑操作,并不了解如何设置文件777属性,所以建议并不附带默认的缓存文件,而默认的缓存文件,在插件使用者第一次使用的时候, 自动生成到data/bbscache目录下,这样将避免插件安装中频繁出现的777问题。[备注提示:一般附带缓存的文件,可内置某些默认值,然后插件 完成安装之后,使用者应该进行一次设置提交来保存它所需要的设置,在这个时候设置再生成缓存文件到data/bbscache目录下一个缓存文件,能够有 效的避免需要设置777的问题]
PHPWind插件开发代码安全基础及简单检测
数据过滤
$_GET、$_POST的变量通过InitGP() or GetGP() 来获取。确认为数值为变量要(int) or (float)强制转换,如:$tid = (int)GetGP('tid'); 。字符串变量要经过Char_cv()过滤,如:$subject = Char_cv($GetGP('subject'));。在PW7中,InitGP() 默认开启Char_cv()过滤,因此不能版本间的兼容问题得处理好,避免有效内容出错。
$_SERVER变量,在PHPWind7中通过全局变量$pwServer或GetServer() 来读取,而在其他版本中,对单独用到的,必须经过addslashes() or Char_cv().
SQL注入
SQL语句中的变量,在PHPWind7中,保证最后经过过滤函数pwEscape() 、 pwImplode() 、pwSqlSingle() 、 pwSqlMulti() 。如:$tbid = $db->get_value('SELECT ptable FROM pw_threads WHERE tid='.pwEscape($tid,false));
而在其他版本,SQL语句中的变量两边必需加个单引号,同时,变量必需是经过了转义的。特别注意从数据库中读取出来的值再次写入数据库时,得进行转义,避免二次注入。
跨站脚本
输出到模板HTML的字符串变量,保证都是经过Char_cv().
杜绝直接在HTML模板中写类似$_GET、$_POST、$_SERVER等变量
文件包含
Include() or require() 文件路径包含变量时,必需经过Pcv()的过滤,如include_once Pcv(D_P.'data/bbscache/'.$filename);
更多精彩
赞助商链接