0

CodeIgniter 内のルート構成ファイルに入れるために使用する非常に単純なルート ルールがあります。

$route['building/(:num)'] = 'building/$1'; 

ルート ルールは問題なく正常に動作します。唯一の問題は、変数をパラメーターに渡すときにこのエラー メッセージが表示されることです。

An Error Was Encountered

The URI you submitted has disallowed characters.

CodeIgniter に数値のみをパラメーターとして受け入れるように指示するルールは知っていますが、パラメーターが間違っている場合は、このエラーを表示する代わりに、別の定義されたページまたは URL にリダイレクトする必要があります。
構成ファイルを介してそれを行うことが可能かどうか、またはこれを行うためにコントローラーを作成する必要があるかどうかはわかりません
ありがとう

4

1 に答える 1

0

ルートは URI のサニタイズやエラー チェックを行うことはありません。パターンに一致するためだけに存在します。$config['permitted_uri_chars']の設定に存在しない文字が URI に含まれているため、エラーが生成されます。これは、メソッドapplication/config/config.phpの URI クラスによってチェックされます。_filter_uri()

使用しようとしている変数がどのようなものかを知らなくても (URI に適していない文字が含まれているようです)、それらの変数を URL で使用する前に検証してサニタイズすることをお勧めします。特にユーザー生成の場合。人を信用しないでください。これまで。

オプションには次のものがあります。

  1. 変数の値をサニタイズ/チェックして、URI に含まれるべきではない文字が含まれているかどうかを確認します。デフォルトの構成設定は URI 文字のほとんどの標準です (ただし、他の文字も許容されます)。そのため、可能であれば (特に自分が何をしているのかわからない場合)、それに固執するようにします。

  2. リストを変更してpermitted_uri_chars他の文字を含めます (あまりお勧めしません。#1 を参照してください)。

  3. URI クラスを拡張し、_filter_uri()メソッドを置換または変更して、必要に応じてそのshow_error()部分をリダイレクトまたは他のコードに置き換えます。また、ライブラリがリダイレクトを制御するべきではないため、あまりお勧めしません。

于 2013-04-09T19:56:54.003 に答える