2011-01-17 10 views
0

私がしようとしているのは、xmlファイルの内容を取得し、showがtextareaにあり、forが提出されていればファイルの内容を更新することです。私はこのコードを使用します:phpが自動的に引用符にスラッシュを追加します

$fname = "../data.xml"; 

if (isset($_POST["update"])) { 
$content = $_POST["update"]; 
$fhandle = fopen($fname,"w"); 
fwrite($fhandle,$content); 
} 

$fhandle = fopen($fname,"r"); 
$content = fread($fhandle,filesize($fname)); 

fclose($fhandle); 

私がサブミットを押すと内容が更新されますが、引用符にスラッシュが追加されます。たとえば、このコード:

<?xml version="1.0" encoding="utf-8"?> 

は次のようになります。

<?xml version=\"1.0\" encoding=\"utf-8\"?> 

と私は再提出する場合:

<?xml version=\\"1.0\\" encoding=\\"utf-8\\"?> 

誰もが私が間違って何をやって教えていただけますか?事前

答えて

7

これはマジッククォートの問題です。私たちもそれに遭遇しました。何かをする前に、POST入力でstripslashes()を使用してください。

+0

これは、「UNIX」とは何の関係も、すべてではありませんサーバー上でマジッククォートを有効にしてください。 –

+0

Daaaaang。私は今マジッククォートが嫌いです、私は何時間も私の問題が何かを見てみました。私はそれがエンコーディングだと思った。 – PaulBGD

+0

これは私には当てはまらない。すべてがオフですが、まだ起こっています。 :/ – JamesG

2

無効からphp.iniまでです。

2

マジッククオートを見ては、常に無効にする必要があります。セキュリティリスクです。 設定を編集できない場合や、変更できない複数のサーバーにコードを変更した場合は、そのコードをチェックする必要があります。この例では、ここで発見された - >http://php.robm.me.uk/#toc-MagicQuotes

function remove_magic_quotes($array) { 
    foreach ($array as $k => $v) { 
     if (is_array($v)) { 
      $array[$k] = remove_magic_quotes($v); 
     } else { 
      $array[$k] = stripslashes($v); 
     } 
    } 
    return $array; 
} 
if (get_magic_quotes_gpc()) { 
    $_GET = remove_magic_quotes($_GET); 
    $_POST = remove_magic_quotes($_POST); 
    $_COOKIE = remove_magic_quotes($_COOKIE); 
} 
1

あなたはまた、あなたの.htaccessファイルに次の行を追加してマジッククオートを無効にすることができます

php_flag magic_quotes_gpc Off 
関連する問題