为什么我不能使用PHP将CSS样式表写入文件?

<?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为我指出正确的方向.

解决方法:

您需要对url属性进行编码,该url中的#被视为哈希值,并且不会发送给服务器.例如

 var args = 'cdata='+encodeURIComponent('body{background: #000; color: #FFF;}');
上一篇:神马批量添加站点PHP脚本


下一篇:PHP fwrite() 函数