リダイレクト or die() :-)
Date 2006-05-18 18:14:07 | Category: PHP
|
XOOPSに限らず、Webアプリケーションのエラー処理で、リダイレクトを用いるケースが多く見られますが、これは本当に正しいでしょうか?
もちろん、POSTデータを処理した後のリダイレクトには意味があります。ブラウザの「戻る」ボタンとフレンドリーになりますし、正常な処理ですから、リダイレクト画面(header('Location:...')ではなくmetaでリフレッシュするタイプ)のメッセージが読めなくても、さほど問題になりません。
しかし、エラー処理において、リダイレクトするのはどうでしょうか?
そのエラーが、通常の操作において頻繁に起きうるものであればともかく、通常あり得ない値が渡されたケースなどにおいては、die()でさっさと終了すべきでしょう。これは、製作者にとって楽、というだけでなく、善意の利用者にとってもメリットがあります。なんらかの理由でエラーになったとしても、エラーメッセージをじっくり読めますし、どこだか判らないページに飛ばされる実行時間がなくなるだけでもありがたいでしょう。
また、エラー処理のリダイレクトによる無限ループもありえます。通常のブラウザであれば正常なリダイレクトになっているのに、一部の翻訳サイトを経由した場合にだけ、無限ループになる、という現象も見つかっています。(もちろんこれは、その翻訳サイトの問題ではありますが、それらによって食いつぶされてしまう負荷は無視できないでしょう)
もちろん、ブラウザで戻ることを禁止するタイプのガチガチなアプリケーションもあるでしょうから、一概には言えませんが、基本的にはリダイレクトよりdie()を先に検討すべきだと私は考えます。
|
|