读取用脚本编辑的文件时为空字符


Empty characters when reading file edited with script

我有一个简单的格式化/编写脚本,但每当我保存并读取它(在<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>

如果您使用此代码来呈现<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()