1

Joomla 2.5 で HTML テキストをデータベースに安全に保存しようとしているので、JInput を使用してフォーム データを取得しています。

developer.joomla.orgによると、HTML フィルターがあります。

HTML - フィルタのホワイト リストまたはブラック リストに従って、HTML エンティティとタグをそのまま含む文字列を返します。

docs.joomla.orgによると、(論理的には。ここでは説明されていません) HTML タグを渡す必要があるこれらのフィルターがあります。

生、HTML、SAFE_HTML

JInput がフィルタリングに使用するコードJFilterInput::cleanには、SAFE_HTML フィルタがありません。あるドキュメントで何をしているのか、別のドキュメントでは RAW フィルターが欠落している理由がわかりません。それとは別に、これらのフィルタはすべて HTML タグを削除します。

$_POST だけで:

$_POST['shortDescription'];

戻り値

<b>Hello <i>world</i></b>

JInput を使用する場合:

$input->get('shortDescription', '', 'RAW');
$input->get('shortDescription', '', 'HTML');
$input->get('shortDescription', '', 'SAFE_HTML');

すべてのリターンだけ

Hello world

HTMLタグなし。それは何のためですか?HTML を安全に保存する必要がある場合の使用方法

4

4 に答える 4

2

私はこの方法でそれをバイパスしました:

public function getHtmlInput($htmlText)
{
    $input_options = JFilterInput::getInstance(
        array(
            'img','p','a','u','i','b','strong','span','div','ul','li','ol','h1','h2','h3','h4','h5',
            'table','tr','td','th','tbody','theader','tfooter','br'
        ),
        array(
            'src','width','height','alt','style','href','rel','target','align','valign','border','cellpading',
            'cellspacing','title','id','class'
        )
    );

    $postData = new JInput($_POST, array('filter' => $input_options));

    return $postData->get($htmlText, '', 'HTML');
}

使用法:

$this->getHtmlInput('documentation');

これがJoomla 3で解決されることを願っています...

于 2013-10-18T15:15:59.067 に答える
1

これを行う必要があります:

$jinput = JFactory::getApplication()->input;
$html = JComponentHelper::filterText($jinput->post->get('shortDescription', '', 'raw'));
于 2016-01-29T09:39:32.070 に答える
0

これは古い投稿ですが、解決策を探しているこの投稿を見つけるのに役立つかもしれないので、2 セントを投じることにしました。

HTMLエディターを使用すると、HTMLフィルターを使用してhtmlが削除されます。それを回避するために、代わりに ARRAY をフィルターとして使用し、結果を内破します。

簡単にさわやかに。

于 2014-05-02T19:31:40.370 に答える