<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>PHPWind用户安装说明书</title>
<link href="phpwind_help.css" type="text/css" rel="stylesheet" />

</head>
<body>
<div id="wrap">
    <div id="wrap2">
        
		<script language="JavaScript" src="header.js"></script> 
        <div id="main">   
		
 <div class="place">您所在的位置：<a href="index.html">PHPWind 安装说明</a> > <A href="styles.htm">高级应用</a> > <A href="plugins.htm">插件相关</A></div>

			<div id="left">
			<!--左菜单栏 begin-->
			  				<UL>
		         <LI><A href="index.htm">简介</A></LI>

				  <LI><A href="install.htm">安装指南</a>
				    <UL>
					<LI><A href="install.htm">系统环境说明</A></LI>
					<LI><A href="install_steps.htm">论坛安装流程</A></LI>
					<LI><A href="install_files.htm">文件及目录结构</A></LI>
					<LI><A href="upgrade.htm">程序升级流程</A></LI>
					<LI><A href="upgrades_change.htm">版本说明</A></LI>
					<LI><A href="install_space.htm">安装集成包介绍</A></LI>
					</UL>
				 </LI>
				
				 <LI><A href="basic.htm">功能使用</A></LI> 
				  
				 <LI><A href="basic_que.htm">常见问题</A></LI>
				  
				 <LI><A href="styles.htm">高级应用</a>
                    <UL>
				    <LI><a href="styles.htm">界面风格与模板定制</a></LI>
                    <LI><a href="Sub-forum.htm">使用PHPWind分论坛</a></LI>
					<LI><A href="plugins.htm">插件相关</A></LI>
					<LI><a href="shifting.htm">论坛系统的搬迁和转移</a></LI>
					<LI><A href="tools.htm">转换工具</A></LI>
				    </UL>
				  </LI>
				  <LI><A href="about_seo_7items.htm">SEO技巧</a>
                    <UL>
				    <LI><a href="about_seo_7items.htm">搜索引擎优化</a></LI>
                    <LI><a href="about_lable_seo.htm">网页标题收录</a></LI>
					<LI><A href="urlrewrite.htm">伪静态的使用</A></LI>
					</UL>
				  </LI>
			
			</UL>
				<!--左菜单栏 end-->
            </div>
			
       		
          		<div class="viewnew">
<h3 style="text-align:center">插件安装流程</h3><br>
<p class="gray" style=" text-align:center; text-indent:0;font-size:12px; border-bottom:1px dotted #d7d7d7"></p>

<p>下述的步骤只是按照通用流程进行说明，如果与插件安装说明中的描述不符，请以插件提供者的描述为准。
<ul>
<li>下载所需的插件
<br>PHPWind百款插件，集大家所爱，请下载适合您当前论坛情况的插件，并仔细阅读插件安装说明。
<li>按插件安装说明修改程序、模板、上传插件
<br>插件上传非常简单，将插件目录上传到论坛根目录下的hack文件夹下即可。
<li>安装插件
<br>上传完毕后，进入论坛后台->风格插件->插件中心,在"未安装插件"栏目下找到该插件，选择安装。
<li>插件管理
<br>进入论坛后台->风格插件->插件中心，在"已安装插件"栏目下找到该插件，开启插件、设置插件参数，开始使用该插件。
</ul>

<h4>插件目录结构，以及文件名约定规则</h4><br>

<p>举例插件名称为打工插件，唯一ID为work，那么插件的文件夹名称应该跟唯一ID保持一致，其所有文件应该存放在 hack/work目录下，以下内容将以此插件为例说明。
<p>1)插件根目录 hack/work目录 
<br>存放插件主要文件，包括在根目录下的文件内容如下：
<ul>
<li>index.php 插件前台主文件，如果不存在此文件，插件则不显示前台界面。
<li>admin.php 插件后台主文件，如果不存在此文件，插件则无后台管理功能。
<li>sql.txt 插件安装所需要执行的SQL语句，禁止Drop PHPWind自身数据以及删除已有数据等危险操作。如果不需要执行SQL语句变动数据库，可以不存在此文件。
<li>readme.txt 插件使用说明，来提供给用户相关说明文档。
<li>倘若无前台显示/后台设置等，可以没有相应的文件，如果有相应功能，则文件命名必须按照指定规则。
</ul>

<p>2)图片目录 hack/work/image 
<br>此目录存放插件文件中所使用到的图片文件，强烈要求在文件中使用$hkimg变量来指定此目录，这样指定目录将会让文件有极大的灵活性。

<p>3)插件包含文件 hack/work/require
<br>倘若插件比较大，可以把一些常用的函数写成文件放入到require文件夹。

<p>4)插件模板文件夹 hack/work/template
<br>不同于5.0之前的版本，所有模板均放置到template下，前台放置于template/wind 后台放置于template/admin，而现有的插件体系规定所有的插件模板均放置在这一个目录下，不再需要分别放到两个文件夹中。 

<p>5)缓存文件
<br>出于文件777属性考虑，以及缓存文件的统一部署，建议插件开发者将缓存文件存储为data/bbscache 
目录下（此目录已经可写，否则无法使用）， 
同时，出于进一步的为插件使用者着想，建议缓存文件使用程序生成，来避免第一次使用插件时，因为没有缓存文件或者缓存文件不可写而导致的错误--我们必须 
考虑到，部分用户不熟悉电脑操作，并不了解如何设置文件777属性，所以建议并不附带默认的缓存文件，而默认的缓存文件，在插件使用者第一次使用的时候， 
自动生成到data/bbscache目录下，这样将避免插件安装中频繁出现的777问题。[备注提示：一般附带缓存的文件，可内置某些默认值，然后插件 
完成安装之后，使用者应该进行一次设置提交来保存它所需要的设置，在这个时候设置再生成缓存文件到data/bbscache目录下一个缓存文件，能够有 
效的避免需要设置777的问题]

<h4>PHPWind插件开发代码安全基础及简单检测</h4><br>
<p><b>数据过滤</b>
<br>$_GET、$_POST的变量通过InitGP() or GetGP() 来获取。确认为数值为变量要(int)　or　(float)强制转换，如：$tid = (int)GetGP('tid'); 。字符串变量要经过Char_cv()过滤，如：$subject = Char_cv($GetGP('subject'));。在PW７中，InitGP() 默认开启Char_cv()过滤，因此不能版本间的兼容问题得处理好，避免有效内容出错。
<br>$_SERVER变量，在PHPWind7中通过全局变量$pwServer或GetServer()　来读取，而在其他版本中，对单独用到的，必须经过addslashes() or　Char_cv().

<p><b>SQL注入</b>
<br>SQL语句中的变量，在PHPWind7中，保证最后经过过滤函数pwEscape()　、　pwImplode() 、pwSqlSingle()　、　pwSqlMulti()　。如：$tbid = $db->get_value('SELECT ptable FROM pw_threads WHERE tid='.pwEscape($tid,false));
<br>而在其他版本，SQL语句中的变量两边必需加个单引号，同时，变量必需是经过了转义的。特别注意从数据库中读取出来的值再次写入数据库时，得进行转义，避免二次注入。

<p><b>跨站脚本</b>
<br>输出到模板HTML的字符串变量，保证都是经过Char_cv().
<br>杜绝直接在HTML模板中写类似$_GET、$_POST、$_SERVER等变量

<p><b>文件包含</b>
<br>Include() or require()　文件路径包含变量时，必需经过Pcv()的过滤，如include_once Pcv(D_P.'data/bbscache/'.$filename);
          	</div>
      </div>
      <div class="clear"></div>   
	  <script language="JavaScript" src="footer.js"></script>
</div>
</body>
</html>