0

我有一个简单的格式化/编写脚本,但是每当我保存并阅读它(将其写入<textarea>HTML 标记中)时,我都会收到一些奇怪的空字符,例如当您在文本编辑器中按 Tab 之前和之后实际文字。如果我用文本编辑器打开写入的文件,则只有文本。这是我的脚本(仅相关代码):

<?php 
$text = $_POST["info"];
$text = str_replace("\n", "<br />", $text);
$text = preg_replace('/\*([^\*]+)\*/', '<b>\1</b>', $text);
if ($_POST["updateContato"]="updateContato") {
    $file = fopen("./pages/contato.php","w");
    fwrite($file, $text);
    fclose($file);
}
?>
<form action="./?painel" method="post">
    <textarea name="info" class="fullwidth">
    <?php include "./pages/contato.php";?>
    </textarea> <br />
    <input type="checkbox" name="updateContato" value="updateContato" checked style="display:none;height:0;width:0;" />
    <input type="submit" value="Salvar" />
</form>
4

1 回答 1

0

如果您使用此代码呈现内容,<textarea>则应将其放在开始和结束标记之间,内容和标记之间没有任何制表符、新行或空格

<form action="./?painel" method="post">
    <textarea name="info" class="fullwidth"><?php include "./pages/contato.php";?></textarea> <br />
    <input type="checkbox" name="updateContato" value="updateContato" checked style="display:none;height:0;width:0;" />
    <input type="submit" value="Salvar" />
</form>

另一方面,您是否使用return关键字来返回内容"./pages/contato.php"

因为如果您不这样做,include "..."则不是用于返回文本数据的好选择。而是将您的数据保存到常规文件中(在非公共文件夹中),而不是包含它,而是使用以下命令读取它file_get_contents()

<form action="./?painel" method="post">
    <textarea name="info" class="fullwidth"><?php echo file_get_contents("./pages/contato.php"); ?></textarea> <br />
    <input type="checkbox" name="updateContato" value="updateContato" checked style="display:none;height:0;width:0;" />
    <input type="submit" value="Salvar" />
</form>

另一方面,调用include "some_script.php"实际上会执行脚本,如果您像示例中那样将内容写入脚本,则极有可能出现代码/解析错误,并且如果您向公众或您的客户展示此功能,则会带来严重的安全风险(或者甚至为此自己使用它)。即使您在被调用脚本中使用 return,它仍然是一个重大的安全漏洞。

我强烈建议您file_get_contents()改用!

于 2012-09-02T08:47:27.777 回答