9.
XOOPS文字過濾
一、 讓自製的HTML表單也能套用XOOPS的Token檢查
- 將產生的$token加至表單中即可:
include_once(XOOPS_ROOT_PATH."/class/xoopsformloader.php");
$XoopsFormHiddenToken=new XoopsFormHiddenToken();
$token=$XoopsFormHiddenToken->render();
- 把$token加到表單中即可。儲存時,請加入以下這段:
if(!$GLOBALS['xoopsSecurity']->check()){
$error=implode("<br />" , $GLOBALS['xoopsSecurity']->getErrors());
redirect_header($_SERVER['PHP_SELF'],3, $error);
}
二、 寫入時
- 存入時,若有特殊符號,如:「\」、「"」、「'」,若沒有處理,那麼可能無法存入。
- XOOPS的文字處理工具:$myts =& MyTextSanitizer::getInstance();
- $myts->addSlashes(文字):替特殊符號加入脫逸斜線,以順利存入資料庫中。若PHP的magic_quotes_gpc設定為on,那麼是不會再加上斜線的。
- $myts->censorString(文字):用來過濾不雅字元,需搭配XOOPS後台的「偏好設定→系統設定→敏感字詞檢查」設定來使用。
三、 讀出文章
- $note_sn=$_REQUEST['note_sn']?intval($_REQUEST['note_sn']):"";
- 儲存時,取得該文章流水編號,並導引至該文章觀看頁面:
$note_sn=save();
header("location:index.php?note_sn=$note_sn");
- default:流程改成這樣:$main=show($note_sn);
- show函數有編號時,讀出一篇文章,沒編號時,則秀出文章列表。
四、 讀出時
- 目的:過濾一些可能會危害網站的語法。
- 呈現大量文字:
$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。
- 呈現一般文字:
$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實體做編碼的動作。