2012-02-17 7 views
1

CodeigniterにURLの "@"記号を受け入れようとしています。私は、以下の許可された文字の一つとして、それを含めました:CodeigniterのURLに "@"記号を使用できない

$config['permitted_uri_chars'] = 'a-z 0-9~%.:[email protected]'; 

しかし、私は彼のエラーメッセージを取得するために引き続き:

Disallowed Key Characters. 

他のすべての文字は「@」を除いて正常に動作しているようですシンボル。何か案は?

ありがとうございます!

+2

'@'はURLの有効な文字ではありません。これはユニバーサルであり、CI固有ではありません。パーセント符号化する必要があります –

+0

"%40"でもエラーが返されます。 – Nick

+0

あなたは許可された文字として%を許可する必要があります%40私は信じて –

答えて

2

CodeIgniterルーティングシステムは、コントローラ、アクション、およびパラメータをキー/値として定義するためにURLを変換します。キーの値が文字を許可しているかどうかをチェックし、$config['permitted_uri_chars']でこれを設定できますが、表示されるエラーメッセージはそのキーの値ではなくキーそのものに関するものです。 $config['permitted_uri_chars']は、この場合@記号を許可するのに役立つものではありません。 system/core/input.phpのキーをチェックする関数function _clean_input_keys($str)があります。 %文字は渡しませんので、「%40」を許可されていません:あなたのケースでは、この周り

if (! preg_match("/^[a-z0-9:_\/-]+$/i", $str)) 

唯一の方法は、主要なパラメータで(多分それを翻訳)この文字を避けるためです。

+0

この説明をありがとう。これはCodeigniter 2.1.0の新機能です。古いバージョンでは "@"記号を使用することができました。 – Nick

0

許可されたURI文字列に適切なエスケープ文字を追加しましたか?

$config['permitted_uri_chars'] = 'a-z 0-9~%\.\:_\-'; 

この権利を自分のCIサイトの1つからコピーし、%40が許可されています。

実際の@記号については上記のpekkaのコメントを参照してください。

+0

それはまだ動作していません。これはとても奇妙です。それは私の古いプロジェクトではうまく動作しますが、このプロジェクトではうまく動作しません。私は文字通りこれを始めたので、それを引き起こしているものは考えられません。 – Nick

関連する問題