我遇到了一个cms问题,当你尝试保存它时,textarea中的代码正在执行。例如,假设你有一个带有以下html / php的textarea。
<div class="footer">
<?php include("assets/footer.php"); ?>
</div>
在大多数服务器上,它工作正常,只需将代码读取为文本并完美保存。但是,在其他服务器上,它实际解析php并在单击save时执行它。这会导致错误并破坏应用程序。我尝试了不同的方法来打开和读取文件,如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>
答案 0 :(得分:0)
简单方法:
1)添加&amp;剥离斜杠
$loadblock = addslashes($_POST['page']);
$loadblock = stripslashes($loadblock);
2)HTML实体
$loadblock = htmlentities($loadblock);
这是你可以做到的两种简单方法,这只是让你可以理解一两种基本方式。 :)