0

作成したフォームで問題が発生しました。ユーザーがアドレス フィールドに自分のアドレスのハッシュ (#) を入力しました。フォームが送信された後にアドレスがクエリ文字列に入れられると、# のフィールドの後にすべての GET 変数が壊れます。なぜこれが起こるのか知っている人はいますか?# を別の文字に変換するか、他のタイプのエンコーディングを使用する必要がありますか? これは、クエリ文字列から値を取得するページにあるコードです..

<?php echo $_GET["address"]; ?><br/> // if this field has a # in the value, the GET variables below do not work..
<?php echo $_GET["city"]; ?><br/>
<?php echo $_GET["state"]; ?>
4

3 に答える 3

0

A#は URL の有効なアンカー シンボルであり、クライアント ブラウザに対してのみ意味を持ちます。

おそらく、このフォームには GET ではなく POST を使用する必要があり、その時点でこの問題はなくなります。

通常、どのユーザーも URL をナビゲートできるようにしたい場合や、そのようなナビゲーションによってサーバー上のデータが変更されない場合 (またはメールのトリガーなどを行う場合) には、URL パラメーター (GET) を使用することをお勧めします。 . この良い例は、e コマース カタログ アプリケーションの URL で製品 ID を使用して、ページに表示する製品を決定することです。

通常、サーバー上のデータを変更する場合や、ページへの基本的なナビゲーションではトリガーされない何らかのアクションをトリガーする場合には、POST を使用する必要があります。前述の e コマース アプリの例に基づいて構築すると、通常は POST を使用してユーザーのショッピング カートにアイテムを追加できます。

于 2013-05-09T17:36:50.113 に答える
0

get パラメータは URL でエンコードされている必要があります http://www.php.net/manual/en/function.urlencode.phpもう 1 つのオプションは、http_build_query ( http://php.net/manual/en/function ) を使用してクエリ文字列を作成することです。 .http-build-query.php )

于 2013-05-09T17:36:11.783 に答える
-1

URL のハッシュはドキュメント フラグメントであり、ブラウザによって読み取られます。したがって、URL のハッシュ記号の後のものは、クエリとしてサーバーに転送されません。ハッシュを URL エンコードする必要があります (javascript によるものと思われます)。参照: http://www.w3schools.com/tags/ref_urlencode.asp

于 2013-05-09T17:36:19.113 に答える