0

我创建了一个小模块,允许用户在进入网页时添加小消息。为此,它将它们写到一个 html 文档 (msg.html) 中,然后在页面中我将其包含()到一个 div 中。

我最大的问题是我不知道如何制作结果文件,即使用 include() 显示的文件,以显示最新的文件,依此类推...我尝试更改 fopen 属性(a,r, b、c、cb+、etccccc),但没有稳定的。

对于我的看法,我应该让 php 表单写入文件,始终在最上面一行附加,因此 include() 将正常显示文件,最新的作为第一个。

或者,我可以制作某种反转数组并包含()或回显“反转”内容。无论哪种方式,我只是没有知识来实现​​这一点。

这是我的代码:

<?php

if (isset($_POST['msg'])) {

    $usr = preg_replace('/[^a-zA-Z0-9]/', '',$_POST['usr']);
    $msg = $_POST['msg'];

    if (empty($usr)) {
        $usr = "Anonymous";
    }

    if (!empty($msg)) {
        $fsp = fopen('msg.html', "ab+"); 
        fwrite($fsp, '<tr><td class="info"><span class="usr">'. $usr .'</span><br><span class="dat">'. date("F j, Y, H:i ") .'</span></td><td>'. $msg ."</td></tr>\n");
        fclose($fsp);
        unset($_POST['msg']);
        unset($_POST['usr']);
    }
}

?>

<form method="post" action="#">
    <div id="comments">
        <h3>Messages</h3>
        <table>
            <tr><td>Name:</td><td><input type="text" id="usr" name="usr"></td></tr>
            <tr><td>Message:</td><td><textarea id="msg" name="msg"></textarea></td></tr>
            <tr><td></td><td><input type="submit" value="Add message!"></td></tr>
        </table>

        </table>
        <table id="ccc">
            <?php include('msg.html'); ?>
        </table>
    </div>
</form>
4

1 回答 1

2

由于您在每行末尾谨慎地放置一个换行符,因此您可以这样做而不是包括:

$arr = file('msg.html');
echo implode("", array_reverse($arr));

我在这里看到的唯一问题是您需要确保消息本身中不存在换行符。所以改变

fwrite($fsp, '<tr><td class="info"><span class="usr">'. $usr .'</span><br><span class="dat">'. date("F j, Y, H:i ") .'</span></td><td>'. $msg ."</td></tr>\n");

fwrite($fsp, '<tr><td class="info"><span class="usr">'. nl2br($usr) .'</span><br><span class="dat">'. date("F j, Y, H:i ") .'</span></td><td>'. nl2br($msg) ."</td></tr>\n");
于 2013-05-28T16:27:29.267 回答