• ベストアンサー

【PHP】文字をPOSTで飛ばすと「'」「"」「\」に「\」がつく

<form>で文字列を送信して「$_POST」で受信する場合、 「'」「"」「\」の前にのみ自動で「\」がついてしまいます。 (「'」「"」「\」→「\'」「\"」「\\」) これはなぜでしょうか? できれば\を付けないようにしたいのですが… お詳しい方、よろしくお願いいたします。 <環境> EUC-JP PHP4.4.4 <プログラム> <?php header('Content-Type: text/html; charset=EUC-JP'); header('Content-Language: ja'); mb_internal_encoding("EUC-JP"); $step = $_GET["step"]; $tx = $_POST["tx"]; if($step==''){ // ---- 初期画面 print "<form action='hoge.php?step=end' method='POST'>"; print " <input type='text' name='tx'>"; print " <input type='submit' value='ENTER'>"; print "</form>\n"; } if($step=='end'){ // ---- 受信画面 print "{$tx}"; } ?>

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

  • ベストアンサー
noname#49664
noname#49664
回答No.2

マジッククォート機能により、一部記号類がエスケープ処理されているためです。stripslashesで戻してください。 $step = stripslashes($_GET["step"]);

ikataro
質問者

お礼

できました! これは簡単でいいですね。 ありがとうございました!!

その他の回答 (1)

回答No.1

magic_quotes_gpcという設定をoffにしてしまえば解決されそうな気がします。 http://jp2.php.net/manual/ja/function.addslashes.php この辺のページに詳しく書かれていると思うので見てみてください。

ikataro
質問者

お礼

なるほど。 やはり自動で付加する機能があるのですね。 ありがとうございました。

関連するQ&A