- ベストアンサー
以下の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>
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
addcslashes() addslashes() stripcslashes() stripslashes() あたりを駆使すると良い
その他の回答 (3)
- ducas2rk
- ベストアンサー率50% (4/8)
#2です。追伸です。 magic_quotes_gpc はPHP_INI_PERDIRなので、 もし、.htaccessが使えるのなら、変更できます。 .htaccessが使えないならごめんなさい。
お礼
ありがとうございます。 、.htaccessを使えるかどうか確かめてみます。
- galluda
- ベストアンサー率35% (440/1242)
がると申します。 んっと…短期的には#1、#2さんの対処策でよろしいかと思うのですが。 特にもしこれが業務とか公開系のものである場合。「何が起きていて」「どこに問題があるのか」についての考察と理解が不可欠かと思います。 それをせずに「場当たり的に対応する」のは、可能な限り避けるべきです。 蛇足的な内容で恐縮ですが。
補足
ありがとうございます。 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)
エスケープされているのなら、 php.ini内の magic_quotes_gpc = Off にする事で解消されるかと思います。 もしくは#1さんがおっしゃっているような関数を使用してください。 ただ、データベース操作が絡むなら、気をつけてくださいね。
お礼
ありがとうございます。 magic_quotes_gpc = Off はサーバをさわれないのでできません。
お礼
ありがとうございます。