3
<?php
    $cdata = $_GET['cdata'];
    $cfile = "./output/$ip/output.css";
    $cout = fopen($cfile, 'w') or die("1");
    fwrite($cout, $cdata) or die("Could not write to " . $cfile);
    echo("Wrote CSS to " . $cfile . " successfully.<br />");
    fclose($cout);
?>

これをWebサーバーで実行すると、成功した(またはエラーをキャッチできなかった)と表示されますが、必要な内容の一部が書き込まれます。これが私が書くように言うことです(urlを介して渡されます$_GET['cdata']):

body{background: #000; color: #FFF;}

そして、これは私がファイルから返すものです

body{background: 

最後にスペースがあるので、ポンド(#)が問題を引き起こしていると思いますが、その理由や修正方法がわかりません。

これは私のコード全体ではなく、単なるスニペットであり、エラーがあると思います。これで十分な情報になることを願っています。そうでない場合は、質問してください。他に何でも投げ込もうとします。前もって感謝します。

解決

jQueryの$.post()メソッドを使用してデータを送信していたので、送信するデータをencodeURIComponent()でラップするだけで、うまくいったようです。そこで正しい方向に私を向けてくれた@xbonezに感謝します。

4

2 に答える 2

4

URLプロパティをエンコードする必要があります。URLの#はハッシュとして扱われ、サーバーには送信されません。例えば

 var args = 'cdata='+encodeURIComponent('body{background: #000; color: #FFF;}');
于 2012-11-24T04:39:57.977 に答える
0

Getリクエストは、URLから値を取得しています。それらをURLにbase64エンコードするか、代わりにPost変数を使用することをお勧めします。例:非表示の入力フォームタイプ。

于 2012-11-24T04:39:25.877 に答える