• ベストアンサー

以下のx.phpにアクセスし

表示された 画面のテキスト入力欄に「\」を入力すると 「\\」が表示されてしまいます。 また、画面のテキスト入力欄に「\\」を入力すると 「\\\\」が表示されてしまいます。 この不都合を解消する手段はあるのでしょうか? つまり、「\」を3個入力すると「\」が6個でなく入力した3個だけ表示されるようにしたいのです。 どうしたらいいでしょうか? x.php: <?='x=['.(isset($_POST['x'])?$_POST['x']:'').']<br/>'?> <form method="post" action="<?=$_SERVER['PHP_SELF']?>"> <input type="text" name="x"/><br/> <input type="submit" value="push"/> </form>

質問者が選んだベストアンサー

  • ベストアンサー
  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.1

addcslashes() addslashes() stripcslashes() stripslashes() あたりを駆使すると良い

reiman
質問者

お礼

ありがとうございます。

その他の回答 (3)

  • ducas2rk
  • ベストアンサー率50% (4/8)
回答No.4

#2です。追伸です。 magic_quotes_gpc はPHP_INI_PERDIRなので、 もし、.htaccessが使えるのなら、変更できます。 .htaccessが使えないならごめんなさい。

reiman
質問者

お礼

ありがとうございます。 、.htaccessを使えるかどうか確かめてみます。

  • galluda
  • ベストアンサー率35% (440/1242)
回答No.3

がると申します。 んっと…短期的には#1、#2さんの対処策でよろしいかと思うのですが。 特にもしこれが業務とか公開系のものである場合。「何が起きていて」「どこに問題があるのか」についての考察と理解が不可欠かと思います。 それをせずに「場当たり的に対応する」のは、可能な限り避けるべきです。 蛇足的な内容で恐縮ですが。

reiman
質問者

補足

ありがとうございます。 x.php: <?=isset($_POST['x'])?'x=['.htmlspecialchars(stripslashes($_POST['x'])).']<br/>':''?> <form method="post" action="<?=$_SERVER['PHP_SELF']?>"> <input type="text" name="x"/><br/> <input type="submit" value="push"/><br/> </form> で動きましたがこれで何か支障はおきないでしょうか?

  • ducas2rk
  • ベストアンサー率50% (4/8)
回答No.2

エスケープされているのなら、 php.ini内の magic_quotes_gpc = Off にする事で解消されるかと思います。 もしくは#1さんがおっしゃっているような関数を使用してください。 ただ、データベース操作が絡むなら、気をつけてくださいね。

reiman
質問者

お礼

ありがとうございます。 magic_quotes_gpc = Off はサーバをさわれないのでできません。

関連するQ&A

専門家に質問してみよう