2

PHP 経由でコンテンツを MySQL DB に投稿するアプリケーションがあります。PHP は $_GET を使用して URL からコンテンツを取得し、DB に挿入します。

これはうまく機能しますが、問題を発見しました。ユーザーが特定の文字 ("、& など) を入力すると、$_GET メソッドはコンテンツを URL から適切に分離しません。

ユーザーがこのコンテンツを投稿したとしましょう: I love blue & green

この場合、& 記号は単語 blue の後の文字列をカットします。

PHP ファイルを編集して & 記号を無視し、実際にそれを $_GET の変数の一部として扱う方法はありますか? どんな助けでも素晴らしいでしょう!

4

7 に答える 7

6

データを PHP に送信する前に URL エンコードできます。それはより良い解決策です。
それらの文字がデータにある場合、特殊文字をクエリ文字列で使用してはなりません。

escapeJavascript では、次の関数を使用できますescape(&ee):%26ee

于 2013-08-13T08:33:47.783 に答える
2

正しい方法は、クライアントが「&」文字を URL コード化することです。「&」の代わりに「%26」を渡します。

于 2013-08-13T08:34:21.413 に答える
1

base64 でエンコードされた文字列としてリクエストを送信できます。

$string = base64_encode("This is my long string with &ampersands and 'quotes'");
print base64_decode($string);

base64 でエンコードされたデータは、元のデータよりも約 33% 多くのスペースを必要とすることに注意してください。

マニュアルから: http://php.net/manual/en/function.base64-encode.php

あなたもurlencodeを持っています

于 2013-08-13T08:33:46.153 に答える
1

文字列を urlencode してみてください:

&

になる

%26

これは PHP 関数です: http://php.net/manual/fr/function.urlencode.php

于 2013-08-13T08:34:48.147 に答える
1

あなたが使用することができます$_SERVER['QUERY_STRING']

http://php.net/manual/en/reserved.variables.server.phpから

于 2013-08-13T08:31:18.047 に答える
0

GET パラメータとして渡す前に、文字列をURL エンコードする必要があります。この特定のケースでは、&記号を%26に置き換える必要があります。

これは、たとえば、フォームを送信する直前に JavaScript を使用して行うことができます。

于 2013-08-13T08:47:22.303 に答える