【发布时间】:2013-12-07 14:33:42
【问题描述】:
我有一个 cms 问题,当您尝试保存它时,textarea 内的代码正在执行。例如,假设您有一个文本区域,其中包含以下 html/php。
<div class="footer">
<?php include("assets/footer.php"); ?>
</div>
在大多数服务器上,它工作正常,只是将代码作为文本读取并完美保存。但是,在其他服务器上,它实际上会解析 php 并在您单击保存时执行它。这会导致错误并破坏应用程序。我尝试了不同的打开和读取文件的方法,例如 fread 和 file_get_contents ,但它们的行为似乎都一样。我还尝试将加载到块中的数据包装为 CDATA,但这也无济于事。
任何其他想法可能导致此问题以及解决此问题的任何方法?
非常感谢您在此问题上提供的任何帮助。
这是文本的保存方式:
$fp = @fopen($fname, "w");
if ($fp) {
fwrite($fp, $block);
fclose($fp);
}
这是读取文件的方式:
if (file_exists($fname)) {
$fp = @fopen($fname, "r");
if (filesize($fname) !== 0) {
$loadblock = fread($fp, filesize($fname));
$loadblock = htmlspecialchars($loadblock);
fclose($fp);
}
}
这是表格:
<form method = "post" action = "">
<textarea name = "text" ><?php echo $loadblock; ?></textarea>
</form>
【问题讨论】:
-
在 textarea 周围有一个表单,可以将 textarea 内的内容保存到 .html 文件中。
-
对不起,我添加了上面的代码。
-
这不是服务器行为的问题,也不是 PHP 包含方式的问题,也不是 textarea 本身的问题。 POSTed textarea 是如何处理的?
-
以下是 POST 的处理方式:$block = stripslashes($_POST["page"]);
-
还是想不通,其他人有什么想法吗?它似乎只发生在某些服务器上。其他人只是保存文本区域而没有问题。
标签: php parsing content-management-system textarea