1

スラッシュで値を送信すると、同じページで、フォーム入力によって送信された URL 値を読み取り、$_POST リクエスト値から出力するフォームを作成しました。しかし、奇妙なことが起こります。文にスラッシュが含まれていない場合、すべてが読み取られます。スラッシュが 1 つ含まれている場合、スラッシュが含まれるまでリクエストが読み取られ、残りの部分は出力されません。私は urldecode と stripslashes を使用しましたが、スラッシュの後の残りの部分は常に出力されません。

   <form autocomplete='off' style='margin-left:8px;' method='POST' name='form'>
   <input type='hidden' value='$parameters2' name='de'>
   <input type='hidden' value='$parameters' name='ef'>
   <input type='hidden' value='$parameters4' name='dee'>
   <input autocomplete='off' id='text' type='text' name='query_string' size='17'   class='BodyCopy' style='border: none; width:89%; font-family:monospace; font-size:12px;'  autofocus></form>


     $parameters = $_POST['query_string'];
     $parameters3 = $_POST['de'];
     $parameters4 = $_POST['ef'];
     $parameters5 = $_POST['dee'];
     echo $parameters;
     echo $parameters3;
     echo $parameters4;
     echo $parameters5;
4

4 に答える 4

0

問題はデータを受信して​​いないことです (POST フォーム フィールドに入力したすべてのデータは、入力で指定されたとおりにサーバーに 1:1 で到着する必要があります)。

問題は、データの表示、またはそのデータを HTML で誤って使用している可能性があります。

あなたの例では、非表示の入力に変数値を設定しています。HTML で特別な意味を持つ文字は HTML を壊してしまうので、直接それを行うのは間違っています。以下にいくつかの例を示します: $parameters2 以下を含む:

フーバー

=> HTML は次のようになります。

<input type='hidden' value='foo' bar name='de'>

これは明らかにあなたが望むものではありません。

データをファイルに埋め込む前に、 addslashes () とhtmlentities ()を介してデータを突っ込んでみてください。

<input type="hidden" value="..." />

このような:

$parameters2 = addslashes(htmlentities($parameters2));

その後、値を HTML に埋め込みます。

次のように、HTML タグ属性の外側に値を表示する場合:

<p>$parameters2</p>

.. htmlentities() のみが必要です。Addslashes は、HTML タグ属性に値を埋め込む必要がある場合に使用します。

注: addslashes-htmlentities がすべてのケースをカバーしているわけではありません。私の記憶が正しければ、少なくとも改行によってタグ属性内の HTML が壊れます。

于 2013-09-28T09:34:28.950 に答える