显示海报的用户名

时间:2015-11-28 03:49:27

标签: php mysqli

我在Stack Overflow的土地上看得很远,但是找不到解决我这个极端基本问题的方法没有成功。

我的网站中有一个消息传递系统,当用户发布消息时,我希望他们的名字在文章的顶部显示,例如。 "发布者(姓名)"。

此时,它会显示已登录用户的名称,但此名称会根据当时登录的用户而更改。

所以,如果我在名称" Jim"下发布了一些内容,然后以#34; Bob"的名义登录,它会将海报名称显示为" Bob&# 34。

我知道我的问题在于$username = $_SESSION['username'];。我不知道该怎么办。

            <?php
                    require_once("nbbc/nbbc.php");

                    $bbcode = new BBCode;

                    $sql = "SELECT * FROM comment ORDER BY id DESC";

                    $res = mysqli_query($dbCon, $sql) or die(mysqli_error($dbCon));

                    $comment = "";

                    $username = $_SESSION['username'];

                    if(mysqli_num_rows($res) > 0) {
                        while($row = mysqli_fetch_assoc($res)) {
                            $id = $row['id'];
                            $date = $row['date'];
                            $content = $row['content'];

                    $bbcode->Parse($content);

                    $comment .= "
                            <div id='a_comment'>
                                <h1>Posted by $username on $date</h1>
                                <p>$content</p>
                            </div>
                    ";
                }
                echo $comment;
            } else {
                        echo "<div id='no_comments'>There are no comments to be displayed.</div>";
                }

            ?>

以下是代码的其余部分:

<?php 
    session_start();
    include_once("inc/connection.php");
    error_reporting(E_ALL); ini_set('display_errors', 1);

    if(!isset($_SESSION['username'])) {
        header("Location: login.php");
        return;
    }

    if(isset($_POST['post'])) {
        $content = strip_tags($_POST['content']);

        $content = mysqli_real_escape_string($dbCon, $content);

        date_default_timezone_set("Australia/Victoria");
        $date = date('d-m-y h:i:sa');

        $sql = "INSERT INTO comment (date, content) VALUES ('$date', '$content')";            

        mysqli_query($dbCon, $sql);

        header("Location: members.php");
    }
?>

1 个答案:

答案 0 :(得分:1)

理想情况下,您将用户ID存储在comment表中,然后在删除注释时使用用户表进行查找。但是,由于我对您的表结构一无所知,我将向您提供有关在comment表中存储用户名的说明,您可以根据需要进行调整。

第1步:更改您的comment表格以存储用户名

ALTER TABLE comment
ADD username VARCHAR(100) AFTER content;

第2步:存储帖子时存储用户名

$sql = "INSERT INTO comment (date, content, username) VALUES ('$date', '$content', '{$_SESSION['username']}')";

第3步:在检索数据时分配正确的用户名

$username = $row['username'];