線上書籍

Home

1041 XOOPS模組開發

一、 寫入時的文字過濾(盡量能存)
  1. 存入時,若有特殊符號,如:「\」、「"」、「'」,若沒有處理,那麼可能無法存入。 $myts =& MyTextSanitizer::getInstance();
  2. 替特殊符號加入脫逸斜線,以順利存入資料庫中。若PHP的magic_quotes_gpc設定為on,那麼是不會再加上斜線的。 $myts->addSlashes(文字);
  3. 用來過濾不雅字元,需搭配XOOPS後台的「偏好設定→系統設定→敏感字詞檢查」設定來使用。 $myts->censorString(文字);
二、  讀出文章的文字過濾(過濾危險)
  1. 目的:過濾一些可能會危害網站的語法。
  2. 呈現大量文字: $myts->displayTarea($text, $html=0, $smiley=1, $xcode=1, $image=1, $br=1);  
    • (1)  「$text」就是要被處理之後呈現的文字。
    • (2)  「$html」是否允許使用HTML語法,用所見即所得編輯器製作出來的請填1。
    • (3)  「$smiley」是否轉換表情圖,預設為1,會將:) 這類的符號轉換為圖片。
    • (4)  「$xcode」是否使用BBCode,如:[color=red]文字[/color]。
    • (5)  「$image」是否允許在文字中使用圖片。若為0,圖片會以連結來顯示。
    • (6)  「$br」是否要將「\n」換行符轉換為<br />,用所見即所得編輯器者請設為0。
  3. 呈現一般文字: $myts->htmlSpecialChars($text, $quote_style=ENT_QUOTES, $charset= 'ISO-8859-1', $double_encode=true);  
    • (1)  「$text」就是要被處理之後呈現的文字。
    • (2)  「$quote_style」要處理的引號模式,「ENT_COMPAT」僅處理雙引號;「ENT_QUOTES」處理雙引號和單引號(預設);「ENT_NOQUOTES」不對任何引號進行處理。
    • (3)  「$charset」轉換的預設編碼,通常使用預設值即可。
    • (4)   「$double_encode」只有PHP 5.2.3之後才有效。若設為false,則不對現有的HTML實體做編碼的動作。
三、 interface_menu.php 前台選單設定
  1. $isAdmin 會判斷目前登入者是否對此模組有管理權限。
  2. 每一組選項格式(記得實際生出對應檔案): //點選後欲連結的檔案 $interface_menu[選項名稱]="index.php"; //Font Awesome 圖示 $interface_icon[選項名稱]="fa-chevron-right";
  3.  http://fortawesome.github.io/Font-Awesome/icons/
四、 前台基本結構(新增投稿頁面post.php)
  1. 前台頁面基本格式(可複製index.php): <?php include_once "header.php"; $xoopsOption['template_main'] = set_bootstrap("bootstrap2樣板檔.html"); include_once XOOPS_ROOT_PATH."/header.php"; /***** 略 *****/ include_once XOOPS_ROOT_PATH.'/footer.php'; ?>
  2. header.php是一個自製檔案(非XOOPS規範),會引入網站主設定檔mainfile.php 、自製的選單檔interface_menu.php、自製共同函數檔function.php
  3. 自製共同函數檔function.php中又會引入tadtools工具箱的tad_function.php
  4. set_bootstrap("bootstrap2樣板檔.html"); 用來自動判別需載入bootstrap2或bootstrap3,此檔案放在tadtools工具箱的tad_function.php中。
  5. bootstrap3樣板檔,只要在bootstrap2樣板檔名加上「_b3」即可。
  6. 記得實際生出樣板檔,並修改xoops_version.php後更新模組以讀取新設定。
五、 套用工具列到樣板上
  1. 在php檔尾前加入以下語法: $xoopsTpl->assign( "toolbar" , toolbar_bootstrap($interface_menu)) ; include_once XOOPS_ROOT_PATH.'/footer.php';
  2. toolbar_bootstrap($interface_menu) 會將選單設定做成bootstrap選單
  3. 在樣板檔中加上該標籤語法即可:<{$toolbar}>
六、 $xoopsUser 使用者物件(可用來判斷有無登入)
  1. 幾個常用的$xoopsUser物件方法:
    • (1)  $xoopsUser->uid():1 //使用者編號
    • (2)  $xoopsUser->name():吳大頭 //真實姓名
    • (3)  $xoopsUser->uname():tad //登入帳號
    • (4)  $xoopsUser->email():[email protected] //Email
    • (5)  $xoopsUser->url():http://localhost/x25/ //個人網站
    • (6)  $xoopsUser->user_avatar():avatars/cavt50877193c9788.png //頭像
  2. 避免沒登入產生錯誤:$uid=($xoopsUser)?$xoopsUser->uid():0;
  3. 以uid取得使用者名稱 $uid_name=XoopsUser::getUnameFromId($uid,1); if(empty($uid_name))$uid_name=XoopsUser::getUnameFromId($uid,0);
七、 自製表單(HTML表單)
  1. 文字框:<input type="text" name="名稱" value="預設值" size="大小">
  2. 隱藏框:<input type="hidden" name="名稱" value="預設值">
  3. 上傳框:<input type="file" name="名稱" size="大小">
  4. 送出鈕:<input type="submit" value="按鈕文字">
  5. 單選框:<input type="radio" name="名稱"  value="值 1">選項文字 1
    • (1)  單選框通常會有好幾個選項,一組選項就要一組<input>,name 都要一樣才行!
    • (2)  若要預設選取,要加上 checked="checked"
    • (3)  可以用<label for="id">選項</label>,以便點選文字就可以勾選該項目。
  6. 複選框:<input type="checkbox" name="名稱[]"  value="值 1">選項文字 1
    • (1)  複選框通常同時會有好幾個選項,一組選項就要一組<input>
    • (2)  name 都要一樣才行!而且因為是複選,所以 name 要加上[],如此會送出陣列。
    • (3)  若要預設選取,要加上 checked="checked"
  7. 下拉選單:<select name="名稱" size=1>選項</select>
    • (1)  選項:<option value="值">選項文字</option>
      • a. 一組選項,就是一組<option>
      • b. 若要預設選取:要在<option>中加入 selected="selected"
    • (2)  若希望下拉選單可以複選,除了 name 要加上[]外,還要加上 multiple 屬性。
  8. 大量文字框:<textarea name="名稱" cols="欄寬" rows="列高">預設值</textarea>
  9. 可套用BootStrap來美化表單 https://kkbruce.tw/bs2/BaseCSS#forms
八、自己測試一下

輸入以下的內容到您的表單中,若是有跳出訊息或是看到影片,那就表示您的安全做得不夠好。

<script>alert('我要入侵了')</script> <iframe width="420" height="315" src="http://www.youtube.com/embed/DC766xWLldM" frameborder="0" allowfullscreen></iframe> 九、所見即所得編輯器 if(!file_exists(XOOPS_ROOT_PATH."/modules/tadtools/ck.php")){ redirect_header("http://www.tad0616.net/modules/tad_uploader/index.php?of_cat_sn=50",3, _TAD_NEED_TADTOOLS); } include_once XOOPS_ROOT_PATH."/modules/tadtools/ck.php"; $fck=new CKEditor("模組名稱","欄位名稱",$預設值); $fck->setHeight(350); $editor=$fck->render();