我在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");
}
?>
答案 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'];