• ベストアンサー

ブラウザ上でファイルの修正を行う

こんばんは。お世話になっております。 タイトルにあるように、ブラウザ上でサーバー内にアップされているファイルを修正するため、アップされているファイルを呼び出し、テキストフォーム内に書き出されたファイル内容を修正して保存。という仕組みを作ったのですが、ローカル上では何ら問題なかったものの、レンタルサーバーへアップして、それを行ってみたところ、ファイル内に記述のあるダブルコーテーションの前に、円マークが保存実行を行う度に、倍々で増えていく現象が起きています。 こんな感じ。 $test="テスト";  →  $test=\"テスト\"  →  $test=\\"テスト\\" 修正を行い、ファイルの上書きをするソースは $addfname = "../index.html"; $editfile = $_POST["editfile"]; $addstr = file_get_contents($addfname); $fp=@fopen("$addfname","w"); fputs($fp,$editfile); fclose($fp); となっています。 以上、ローカル上では何ら問題なかったことなので、何処が不適切なのか分からずにおります。お忙しい中恐縮ですがアドバイスいただけたら幸いです。宜しくお願い致します。

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

  • ベストアンサー
  • BellBell
  • ベストアンサー率54% (327/598)
回答No.2

そのサーバの設定で、magic_quotes_gpcがONになっているのでしょうね。 考えようによっては大きなお世話機能ですが、DBを使う場合のセキュリティ対策が自動でされているようなものです。 以下のように、その設定がONになっているサーバではstripslashes関数を使用して、\\→\と変換します。Offの場合はそのままの文字列を使用します。 if (get_magic_quotes_gpc()) { $editfile = stripslashes($_POST["editfile"]); }else{ $editfile = $_POST["editfile"]; } 関数化してもいいですね。 function ConvertArgumentString($str){ if (get_magic_quotes_gpc()) { return stripslashes($str); }else{ return $str; } } $editfile = ConvertArgumentString($_POST["editfile"]);

mayu_chap
質問者

お礼

BellBellさんへ こんばんは。前回に引き続き、早速のアドバイスをありがとう御座います。 ソースも含め、その意味までお教えいただき、とても有難く感謝いたします。 ありがとう御座いました!

その他の回答 (1)

  • memphis
  • ベストアンサー率40% (975/2395)
回答No.1

サーバとローカルの環境が違うから、そうなるのでしょう。 サーバのmagic_quotes_gpc をOFFにすれば同じ動作になりませんか?

mayu_chap
質問者

お礼

memphisさんへ はじめまして、こんばんは。 早速のアドバイスをありがとう御座います。 magic_quotes_gpc・・・お恥ずかしいながら、はじめて目にしました。 .htaccessで設定することで回避できるのですよね。ありがとう御座いました!

関連するQ&A