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>

もう1つの注意点として、呼び出しinclude "some_script.php"は実際にスクリプトを実行し、例のようにスクリプトに何かを書き込むと、コード/解析エラーの可能性が高くなり、この機能を公開または顧客に提示すると重大なセキュリティリスクが発生します(または、そのために自分で使用することさえできます)。呼び出されたスクリプトで return を使用したとしても、依然として重大なセキュリティ ホールです。

代わりに使用することを強くお勧めしますfile_get_contents()!

于 2012-09-02T08:47:27.777 に答える