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);
?>

当我在我的网络服务器上执行此操作时,它告诉我它是成功的(或者我可能没有发现错误),但它写入了我想要的部分内容。这是我告诉它写的内容(通过 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

获取请求是从 url 获取值。您可能希望将它们 base64 编码到 url 或使用 Post 变量。例如:隐藏的输入表单类型。

于 2012-11-24T04:39:25.877 回答