廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 25827 個閱讀者
 
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
月光 手機
個人頭像
個人文章 個人相簿 個人日記 個人地圖
社區建設獎
頭銜:看我代替月亮懲罰你!看我代替月亮懲罰你!
版主
級別: 版主 該用戶目前不上站
版區: Unix-like, 網站架設
推文 x42 鮮花 x565
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片
推文 x0
[程式] 5.X 插件開發手冊/附舊版插件升級方法
20061019版本 PHPWind官方團隊
為統一插件開發規範,促進PHPWind論壇程序的插件開發,以及提高廣大PHPWind用戶安裝插件更加簡易,同時盡量避免升級論壇程序而帶來的插件失效,特撰寫本開發手冊,供插件開發者參考,以及給有興趣開發插件的朋友們提供幫助。使用本規則,將會
避免當前插件體系所能導致的所有常見低級錯誤:前台文件後台文件填寫顛倒,不知道如何執行SQL,不知道如何設置文件777屬性,
因為沒有默認的緩存文件而導致的空白錯誤。

一、   插件專用常量/變量/函數:


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語句變動數據庫,可以不存在此文件。
d)   readme.txt 插件使用說明,來提供給用戶相關說明文檔。
e)   倘若無前台顯示/後台設置等,可以沒有相應的文件,如果有相應功能,則文件命名必須按照指定規則。
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的問題]

三、   舊版本插件升級方法


按照標準的格式開發安裝的插件--通過論壇管理後台添加的插件,需要進行一定修改。舊有用戶升級需要對原有插件的文件佈局做較小的改動。插件作者倘若發佈新版本插件,建議採用新的開發方法。
而舊版本插件--僅僅指按照標準方法開發的插件,通過論壇後台添加的。需要進行如下三個地方的修改,
非常簡單:
1)
  首先按照插件的唯一ID建立一個文件夾在hack目錄下,比如插件唯一ID為work,那麼則需要在Hack目錄下添加一個目錄為work目錄,即為hack/work目錄。
2)
  然後把插件前台文件改名為index.php,後台文件改名為admin.php(如果存在前台或者後台文件的話)
3)
  把改名之後的文件放入到剛剛建立的相應目錄中去,比如work目錄
4)
  完成。其他部分均不需要修改。

四、   主要相關函數


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");

五、   PHP開發建議


1)
  不使用默認的getdate函數獲取日期,而使用get_date函數(PW系統自帶),這樣將能夠保持跟系統時間保持一致(PW後台的時間校正,時區等設置將會生效)。
2)
  推薦使用include函數包含緩存文件,因為require可能缺少文件而產生一個致命錯誤--空白,而Include函數則不會有致命錯誤的產生。

六、   其他相關建議


為了避免PHPWind程序/補丁更新而導致的文件變動,建議插件開發者按照本參考標準開發插件,並盡可能避免修改論壇自身文件,以避免倘若論壇升級之後插件全部失效。另外,插件的數據建議盡可能採用新的數據表,而不要改動原有的數據表,這樣也可以有效地避免升級論壇程序而導致的論壇插件數據丟失。對於新建立的插件數據表,建議使用pw_hack_xxx格式來建立,便於區分。


七、   插件開發實例


請參考PHPWind程序中的系統自帶插件參考其中的具體寫法。相關函數內容請參考admin/admincp.php global.php 常用的系統函數均在這兩個文件之內。



月光論壇
http://bbs.dj...com/


===================================
贊助本站 -- 刊登廣告 -- 物超所值虛擬主機租用
獻花 x0 回到頂端 [樓 主] From:台灣中華電信 | Posted:2006-10-26 04:43 |

首頁  發表文章 發表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.054495 second(s),query:15 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言