M.C.P.C.

―むり・くり―プラスコミュニケーション(更新終了)


| トップページ |

2007年5月10日 00:01

CGI.pmの$q->self_urlと$q->query_stringの違い

このエントリーをはてなブックマークに追加 mixiチェック

$q->self_url
状態情報を保持し自分自身を参照するURLの作成
$q->query_string
処理されていない問い合わせ文字列

CGI.pm で生成されるオブジェクトは、CGI - 簡単なCGI(Common Gateway Interface)クラス [perldoc.jp] では、「問い合わせオブジェクト」と訳されているわけですから、このオブジェクトを通して URL 文字列を生成するといいです。

たとえば、

$q->param(foo => 'bar');

を実行すると、問い合わせオブジェクトの中にパラメータが登録されて、

$q->delete('foo');

を実行すると、問い合わせオブジェクトの中からパラメータが削除されます。


$q->self_urlは、現在問い合わせオブジェクトが持っている問い合わせを、URL クエリ文字列に変換します。
$q->query_stringは、変更・削除された分の問い合わせが反映されません。

特に、CGI::Session を使って、フォームからのパラメータと、セッションで保持しているパラメータを合成した場合に問題になりますので注意。

2007.5.11 15.10訂正

CGIが http://www.example.com/cgi-bin/hoge.cgi
パラメータが fuga=hageのとき
$q->self_url
→http://www.example.com/cgi-bin/hoge.cgi?fuga=hage
$q->query_string
→fuga=hage
となります。

最初やったときは上手く反映されなかったんだけどなーいまやってみるとちゃんとパラメータが反映されているので、訂正します。それにしても、意味のないエントリーになってしまった。

投稿 大野 義貴 [Perl] | |

トラックバック(0)

トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/2068

コメントする