0

ユーザーがこのデータ16" HOUSEHOLD STAND FAN AA070021Aを挿入すると、出力はこの16" HOUSEHOLD STAND FAN AA070021Aと同じになるはずです が、この出力 16\ HOUSEHOLD STAND FAN AA070021A しか得られず、引用符は "\" になります。

前 :

16\ 家庭用スタンドファン AA070021A

後 :

16" 家庭用スタンドファン AA070021A

add_to_quote.php?product_name=16" HOUSEHOLD STAND FAN AA070021A

 <?php
  $product_name_1 = $_GET['product_name'];
  $product_name_2  = str_replace('"', "", $product_name_1);
  $product_name = preg_replace(array('/\s{2,}/', '/[\t\n]/'), ' ', $product_name_2);
  echo $product_name;
  ?>
4

4 に答える 4

2

urlencode()リンクに追加:

<a href="add_to_quote.php?product_name=<?php echo urlencode($product_name) ?>">Add To Quote</a>
于 2012-06-11T04:51:35.500 に答える
2

あなたのコードについて複数のコメントがあります:

1-入力をサニタイズします。それ以外の:

$product_name_1 = $_GET['product_name'];

使用する:

$product_name_1 = mysql_real_escape_string(stripslashes($_GET['product_name']));

引用に関しては、私が使用するアプローチの 1 つであり、最も簡単な方法はbase64_encode()メソッドを使用することです。

以下に例を示します (これはコードから取得したものですが、変数の扱いが異なります)。

add_to_quote.php?product_name=16" 家庭用スタンド ファン AA070021A

 <?php
  $product_name_1 = $product_name_1 = htmlentities($_GET['product_name']);
  $product_name_2  = base64_encode($product_name_1);
  echo $product_name_2 . "<br />";
  $product_name_3 = base64_decode($product_name_2);
  echo $product_name_3;
  ?>

base64_encode()このような状況でbase64_decode()は素晴らしい機能です。

于 2012-06-11T04:58:29.210 に答える
0

変化:

$product_name = preg_replace(array('/\s{2,}/', '/[\t\n]/'), ' ', $product_name_2);

に:

$product_name = preg_replace(array('/\s{2,}/', '/[\t\n]/'), ' ', $product_name_1);

私のために働いた。

于 2012-06-11T04:48:17.650 に答える