dポイントプレゼントキャンペーン実施中!

こんばんは。お世話になっております。
タイトルにあるように、ブラウザ上でサーバー内にアップされているファイルを修正するため、アップされているファイルを呼び出し、テキストフォーム内に書き出されたファイル内容を修正して保存。という仕組みを作ったのですが、ローカル上では何ら問題なかったものの、レンタルサーバーへアップして、それを行ってみたところ、ファイル内に記述のあるダブルコーテーションの前に、円マークが保存実行を行う度に、倍々で増えていく現象が起きています。

こんな感じ。
$test="テスト";  →  $test=\"テスト\"  →  $test=\\"テスト\\"


修正を行い、ファイルの上書きをするソースは

$addfname = "../index.html";
$editfile = $_POST["editfile"];
$addstr = file_get_contents($addfname);
$fp=@fopen("$addfname","w");
fputs($fp,$editfile);
fclose($fp);

となっています。
以上、ローカル上では何ら問題なかったことなので、何処が不適切なのか分からずにおります。お忙しい中恐縮ですがアドバイスいただけたら幸いです。宜しくお願い致します。

A 回答 (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"]);
    • good
    • 0
この回答へのお礼

BellBellさんへ

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

お礼日時:2008/11/24 18:29

サーバとローカルの環境が違うから、そうなるのでしょう。


サーバのmagic_quotes_gpc をOFFにすれば同じ動作になりませんか?
    • good
    • 0
この回答へのお礼

memphisさんへ

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

お礼日時:2008/11/24 18:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!