人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPフレームワーク Ethna アクションフォームについて

LLフレームワークBOOKS「Ethna×PHP」をやっています。
アクションフォームのメソッドのところで質問です。

以下のように記載があります。

1、フォーム値($form):もともと送信されてきたフォーム値をエスケープした値
2、エスケープ付きコンテナ($app):アクションなどで与えられた値をエスケープした値
3、エスケープなしコンテナ($app_ne):エスケープされずにそのままの値

まず、ここで言うエスケープとはクロスサイトスクリプティング防止のあれですよね?

それで1と2の違いがよくわかりません。
「アクションなどで与えられた値」と、「もともと送信されてきたフォーム値」の違いがよくわかりません。
だれか教えて頂けませんか?

何かいい例文などもありましたら紹介して頂けると助かります。

●質問者: taityou3
●カテゴリ:コンピュータ ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● sotarok

1. もともと送信されてきたフォーム値

これは、 http://example.com/?name=aoi などの GET パラメータや、

タグの などの POST の値を指していて、
http://example.com/?name=aoi などに対して、ActionForm で
$form => array(
 'name' => array(
 'type' => VAR_TYPE_STRING,
 ....
 ),
),

などと定義すれば、テンプレートで

{$form.name}

でとれます。


2. アクションなどで与えられた値

で、こっちは、ActionClass 内で、 $this->af->setApp() メソッドを用いて自分でセットした値のことです。

例えば、

public function perform()
{
 // ...
 $this->af->setApp('url', 'http://www.aoimiyazaki.jp/');
 // ...
}

などとセットすると、テンプレートで

{$app.url}

で参照することができます。

で、ちなみに「エスケープされた値」は、まぁ、XSS対策などの対策で、という認識はほぼ合っていますが、要するに htmlspecialchars がかかった値のことです。
例えば、ブログアプリの本文などに HTML を許容している場合、ActionClass/ViewClassで setApp() を使ってしまうとテンプレートで出力するときに HTML がエスケープされてしまいますが、setAppNe() を使えばエスケープされず、HTML をそのまま出力することができる、みたいな用途で使います。


taityou3さんのコメント
ありがとうございます。少しわかってきました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ