<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                HTML Purifier是一個非常強大的庫。但是權力帶來了更大的責任,即更長的執行時間。請記住,該庫并不是對草稿提交的HTML輕描淡寫:它正在分解整個事物,嚴格檢查各個部分,然后將其放回原處。 因此,如果事實證明HTML Purifier對于出站篩選而言有點太慢,那么您有幾種選擇: ## 入站過濾 由用戶提交時執行HTML過濾。由于用戶已經提交了某些東西,因此在加載時間上多花半秒鐘不會造成太大的問題。然后,顯示內容是直接從數據庫/文件系統輸出內容的一種簡單方法。這種方法的問題是您的用戶丟失了原始文本,并且在進行編輯時將處理過濾后的文本。盡管這可能是一件好事,尤其是如果您使用的是所見即所得的編輯器,但如果用戶輸入錯誤,也會導致數據丟失。 示例(非功能性): ~~~ <?php /** * FORM SUBMISSION PAGE * display_error($message) : displays nice error page with message * display_success() : displays a nice success page * display_form() : displays the HTML submission form * database_insert($html) : inserts data into database as new row */ if (!empty($_POST)) { require_once '/path/to/library/HTMLPurifier.auto.php'; require_once 'HTMLPurifier.func.php'; $dirty_html = isset($_POST['html']) ? $_POST['html'] : false; if (!$dirty_html) { display_error('You must write some HTML!'); } $html = HTMLPurifier($dirty_html); database_insert($html); display_success(); // notice that $dirty_html is *not* saved } else { display_form(); } ?> ~~~ ## 緩存過濾后的輸出 接受提交的文本并將其原封不動地放入數據庫中,然后還生成過濾的版本并將其存儲在數據庫中。將過濾后的版本提供給讀者,將未更改的版本提供給編輯者。如果需要,您可以使緩存無效,并在第一頁視圖上重新生成緩存的過濾版本。優點?完整的數據保留。缺點?這更加復雜,并且如果其他編輯器使用的是WYSIWYG編輯器,則可以使用XSS進行打開(要解決此問題,他們必須能夠使用以純文本方式提供的\*真正\*原始文本)。 示例(非功能性): ~~~ <?php /** * VIEW PAGE * display_error($message) : displays nice error page with message * cache_get($id) : retrieves HTML from fast cache (db or file) * cache_insert($id, $html) : inserts good HTML into cache system * database_get($id) : retrieves raw HTML from database */ $id = isset($_GET['id']) ? (int) $_GET['id'] : false; if (!$id) { display_error('Must specify ID.'); exit; } $html = cache_get($id); // filesystem or database if ($html === false) { // cache didn't have the HTML, generate it $raw_html = database_get($id); require_once '/path/to/library/HTMLPurifier.auto.php'; require_once 'HTMLPurifier.func.php'; $html = HTMLPurifier($raw_html); cache_insert($id, $html); } echo $html; ?> ~~~ ## 摘要 簡而言之,入站過濾是簡單的選擇,而緩存是健壯的選擇(盡管具有更大的存儲需求)。 還有第三個選項,與我們已經討論的兩個選項無關:自己配置和優化HTMLPurifier。如果您決定這樣做,請務必報告您的結果!特別是如果將HTML Purifier移植到C ++。;-)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看