|
|
@@ -1,6 +1,6 @@
|
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
<!-- Reviewed: no -->
|
|
|
-<!-- EN-Revision: 21606 -->
|
|
|
+<!-- EN-Revision: 22389 -->
|
|
|
<sect1 id="zend.filter.introduction">
|
|
|
|
|
|
<title>導入</title>
|
|
|
@@ -25,18 +25,18 @@
|
|
|
|
|
|
<para>
|
|
|
この基本的なフィルタの定義を拡張して、入力に一般的な変換を加える処理もフィルタに含めることにしましょう。
|
|
|
- ウェブアプリケーションでよくある変換は、HTML エンティティのエスケープ処理です。
|
|
|
+ ウェブアプリケーションでよくある変換は、<acronym>HTML</acronym> エンティティのエスケープ処理です。
|
|
|
たとえば (ウェブブラウザなどからの) 信頼できない入力をもとにして
|
|
|
フォームのフィールドに値を自動的に埋め込む場合は、その値には
|
|
|
- HTML エンティティが含まれてはいけません。あるいはもし含むならそれをエスケープしておかなければなりません。
|
|
|
+ <acronym>HTML</acronym> エンティティが含まれてはいけません。あるいはもし含むならそれをエスケープしておかなければなりません。
|
|
|
これにより、予期せぬ振る舞いを起こすことを防ぎ、
|
|
|
セキュリティ上の脆弱性も防ぎます。
|
|
|
- この要求を満たすには、入力に含まれる HTML
|
|
|
+ この要求を満たすには、入力に含まれる <acronym>HTML</acronym>
|
|
|
エンティティを削除あるいはエスケープしなければなりません。
|
|
|
もちろん、どちらの方式が適切かはその場の状況に依存します。
|
|
|
- HTML エンティティを除去するフィルタは、最初に定義したフィルタの考え方
|
|
|
+ <acronym>HTML</acronym> エンティティを除去するフィルタは、最初に定義したフィルタの考え方
|
|
|
- 入力の一部を取り出すための演算子 - にもとづくものです。
|
|
|
- 一方、HTML エンティティをエスケープするフィルタは、入力を変換するタイプのものです
|
|
|
+ 一方、<acronym>HTML</acronym> エンティティをエスケープするフィルタは、入力を変換するタイプのものです
|
|
|
(たとえば "&" は "&amp;" に変換されます)。
|
|
|
これらの例のような処理はウェブ開発者にとって重要です。
|
|
|
<classname>Zend_Filter</classname> で "フィルタリングする" という場合、
|
|
|
@@ -59,16 +59,14 @@
|
|
|
<para>
|
|
|
以下の例は、アンパサンド (<emphasis>&</emphasis>) およびダブルクォート (<emphasis>"</emphasis>)
|
|
|
の二つの入力データに対してフィルタを適用するものです。
|
|
|
+ </para>
|
|
|
|
|
|
- <programlisting language="php"><![CDATA[
|
|
|
+ <programlisting language="php"><![CDATA[
|
|
|
$htmlEntities = new Zend_Filter_HtmlEntities();
|
|
|
|
|
|
echo $htmlEntities->filter('&'); // &
|
|
|
echo $htmlEntities->filter('"'); // "
|
|
|
]]></programlisting>
|
|
|
-
|
|
|
- </para>
|
|
|
-
|
|
|
</sect2>
|
|
|
|
|
|
<sect2 id="zend.filter.introduction.static">
|
|
|
@@ -81,28 +79,26 @@ echo $htmlEntities->filter('"'); // "
|
|
|
を実行する方法もあります。このメソッドの最初の引数には、
|
|
|
<methodname>filter()</methodname> メソッドに渡す入力値を指定します。
|
|
|
二番目の引数は文字列で、フィルタクラスのベースネーム
|
|
|
- (Zend_Filter 名前空間における相対的な名前) を指定します。
|
|
|
+ (<classname>Zend_Filter</classname> 名前空間における相対的な名前) を指定します。
|
|
|
<methodname>staticFilter()</methodname> メソッドは自動的にクラスを読み込んでそのインスタンスを作成し、
|
|
|
指定した入力に対して <methodname>filter()</methodname> メソッドを適用します。
|
|
|
+ </para>
|
|
|
|
|
|
- <programlisting language="php"><![CDATA[
|
|
|
+ <programlisting language="php"><![CDATA[
|
|
|
echo Zend_Filter::filterStatic('&', 'HtmlEntities');
|
|
|
]]></programlisting>
|
|
|
|
|
|
- </para>
|
|
|
-
|
|
|
<para>
|
|
|
フィルタクラスのコンストラクタにオプションを指定する必要がある場合は、
|
|
|
それを配列で渡すことができます。
|
|
|
+ </para>
|
|
|
|
|
|
- <programlisting language="php"><![CDATA[
|
|
|
+ <programlisting language="php"><![CDATA[
|
|
|
echo Zend_Filter::filterStatic('"',
|
|
|
'HtmlEntities',
|
|
|
array('quotestyle' => ENT_QUOTES));
|
|
|
]]></programlisting>
|
|
|
|
|
|
- </para>
|
|
|
-
|
|
|
<para>
|
|
|
この静的な使用法は、その場限りのフィルタリングには便利です。
|
|
|
ただ、複数の入力に対してフィルタを適用するのなら、
|
|
|
@@ -113,7 +109,7 @@ echo Zend_Filter::filterStatic('"',
|
|
|
<para>
|
|
|
また、<classname>Zend_Filter_Input</classname> クラスでも、特定の入力データのセットを処理する際に
|
|
|
複数のフィルタやバリデータを必要に応じて実行させる機能も提供しています。
|
|
|
- 詳細は <xref linkend="zend.filter.input" /> を参照ください。
|
|
|
+ 詳細は <link linkend="zend.filter.input">Zend_Filter_Input</link> を参照ください。
|
|
|
</para>
|
|
|
|
|
|
<sect3 id="zend.filter.introduction.static.namespaces">
|