2011-07-19 16 views
3

URLクエリ文字列に必要な文字をユーザーが入力できる状況があります。URLクエリ文字列内の特殊文字

例:

http://localhost/default.aspx?ID=XXXX

http://localhost/default.aspx?ID=&XXXX

http://localhost/default.aspx?ID=#XXXX

それは関係なく、文字が何であるかではないとしてWebページには、IDパラメータを受け入れる必要があります。ただし、アンパサンド(&)やポンド(#)などの特定の特殊文字は問題を引き起こします。どのように私はそれらを受け入れることができますか?

答えて

2

ユーザーがクエリ文字列を入力している場合は、それらが適切にクエリ文字列をエンコードする必要があります最初。フォームの送信など、クエリ文字列を自分で作成する場合は、URLエンコードメソッドを使用する必要があります。

+0

特殊文字を解釈できるWebページ側に追加できるコントロールはありませんアンパサンド(&)のような文字は、通常の文字として使用できますか? – m0g

+1

私はあなたの唯一の選択肢は、あなたが期待する唯一のIDだと仮定して、すべてのパラメータを反復することだと思います。したがって、ユーザーが?ID = 123&456を入力した場合。それから、サーブレットAPIは値123を持つ1つのパラメータIDしか与えないかもしれませんが、2番目のパラメータ456を与えるかもしれません。その場合、それらを一緒に追加することができます。これは本当に悪い解決策ですが、あなたが反復するときに順序が乱れる可能性があります。技術が必要とする方法でサポートされていないため、最善の方法は要件を変更することです。 –

1

エンコードあなたのURLはHttpServerUtility.UrlEncode Method (String)

編集:

encodeURIComponent(uri) 

uriコンポーネントは次のとおりです。あなたのコメント次は、あなたがこのID

String id = Request.QueryString["ID"]; 
+0

私の場合、ユーザーはアドレスバーにURLを入力します。私がする必要があるのは、ユーザーが入力したIDだけを取得することです。どのように私はURLを制御することなくこれを行うことができますが、クエリ文字列だけ? – m0g

+0

しかし、その場合、ID =&XXXXの場合、IDは空の文字列になります。実際には "&XXXX"に等しいIDが割り当てられます。 – m0g

4

のクエリ文字列値を取得したいです?ID=

0

使用PHPで、その後

userinput = escape(userinput) 

、:

$userinput = urldecode($_GET['id']) 

やJSで:

userinput = unescape(userinput)