2013年3月31日 星期日

Windows作業系統-PHP安裝tidy


最近真的是挺忙的...,每次下定決心要做什麼之後就一直被外來突然的事情給打斷。
好吧,今天要寫的筆記就是在windows作業系統下的php安裝tidy。


為什麼要安裝tidy呢,簡單來講呢就是,你的網站的後台,或者是前台的討論區等等,如果有加載一般的文字編輯器(或者是 wysiwyg ),供他人編輯,然後送出資料的那種,我們必須要去設想,使用者未必會正常的使用文字編輯器,或者,編輯器也未必是完美的,不可能沒有bug,當使用編輯完之後,按下送出的那一刻,使用者不可能知道編輯器所送出去的字串(也就是html),是不是符合常理的,比方說編輯器送出去之後的html變成:

<p>我是一段文字</i></table>

要是真的送出這種荒腔走板的html格式,會導致顯示頁面的破版,當然也有可能是有心人士故意要導致網頁破板而來亂的也是有。

所以,我們要做的事情就是,防止頁面跑版或者破版,以及讓輸出的html碼,盡量符合常理的出現,tidy能幫你把缺少的tag補滿。


如何確認是否有安裝tidy?
打開你的phpinfo(http://localhost/phpinfo)頁面,尋找'tidy',若沒見到應該就是沒有,通常都是沒有。


如何安裝tidy?
在windows下裝tidy 
到C:\Windows開啟php.ini,搜尋"extension",可以在約略560幾行加入extension=php_tidy.dll
然後重啟apache



再次打開http://localhost/phpinfo(你的phpinfo)
搜尋tidy,確認有安裝tidy


如何使用tidy?
在php網站的有個很好的範例,tidy有很多function可以用,依照你的需求去做選擇,而我比較常需要使用tidy_parse_string(),因此以此為例:
http://php.net/manual/en/tidy.parsestring.php


tidy_parse_string ( string $input [, mixed $config [, string $encoding ]] )
有三個參數,第一個$input呢,是要放要被解析的string。
第二個config,有一些設定可以用,http://tidy.sourceforge.net/docs/quickref.html 這個網站可以參考config有哪些 ,$config不能留空值' ',會報錯,通常設定的config還蠻多個的,所以網站上的範例,會將config存成array。
第三個是編碼,通常我使用UTF-8

因為php網站已經寫得很清楚了,所以我就不再贅述了。
如果你要解析的內容不是只有一個頁面的某個string,而是要整個檔案都解析的話
可以參考tidy_parse_file。

另外一點就是若需要防止XSS攻擊,有些tag必須過濾掉,可以參考這個網址:
Is there a way to delete all embed, object, script tags in php?
或是依需要再另外搜尋吧!


沒有留言:

張貼留言

若你看的文章,時間太久遠的問題就別問了,因為我應該也忘了... XD

Vue multiselect set autofocus and tinymce set autofocus

要在畫面一進來 focus multiselect 的方式: 參考: https://jsfiddle.net/shentao/mnphdt2g/ 主要就是在 multiselect 的 tag 加上 ref (例如: my_multiselect), 另外在 mounted...