CGI.pmの$q->self_urlと$q->query_stringの違い
スポンサードリンク
- $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
となります。
最初やったときは上手く反映されなかったんだけどなーいまやってみるとちゃんとパラメータが反映されているので、訂正します。それにしても、意味のないエントリーになってしまった。
スポンサードリンク
トラックバック(0)
トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/2068
コメントする