防止php代码在保存时在textarea中执行

时间:2013-12-07 14:33:42

标签: php parsing content-management-system textarea

我遇到了一个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>

1 个答案:

答案 0 :(得分:0)

简单方法:

1)添加&amp;剥离斜杠

$loadblock = addslashes($_POST['page']);
$loadblock = stripslashes($loadblock);

2)HTML实体

$loadblock = htmlentities($loadblock);

这是你可以做到的两种简单方法,这只是让你可以理解一两种基本方式。 :)