我一直在做一个非常简单的php评论系统,用户只需键入一个评论就会出现在网站上。但是,我意识到如果用户刷新页面,最新的评论将继续发布
我认为它与getComments函数中的while循环有关,但是我已尝试过标题("位置:index.php")并且它有另一个错误,所以我&# 39;我真的没有想法。
的index.php:
<?php
date_default_timezone_set('Europe/Bucharest');
include 'dbh.inc.php';
include 'comments.inc.php';
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="styles.css">
</head>
<body>
<?php
echo "<form method='POST' action='".setComments($conn)."'>
<input type='hidden' name='uid' value='Anonymous'>
<input type='hidden' name='date' value='".date('d-m-Y H:i:s')."'>
<textarea name='message'></textarea><br/>
<button type='submit' name='commentSubmit'>Comment</button>
</form>";
getComments($conn);
?>
</body>
</html>
Comments.inc.php:
<?php
function setComments($conn)
{
if (isset($_POST['commentSubmit']))
{
$uid = $_POST['uid'];
$date = $_POST['date'];
$message = $_POST['message'];
$sql = "INSERT INTO comments (uid, date, message) VALUES ('$uid','$date','$message')";
$result = mysqli_query($conn,$sql);
}
}
function getComments($conn)
{
$sql = "SELECT * FROM comments";
$result = mysqli_query($conn,$sql);
while($row =$result->fetch_assoc())
{
echo "<div class='comment-box'><p>";
echo $row['uid']." ";
echo $row['date']."<br>";
echo nl2br($row['message']);
echo "</p></div>";
}
}
dbh.inc.php
<?php
$conn = mysqli_connect('localhost', 'root', '' , 'commentsection');
非常感谢任何反馈。
答案 0 :(得分:0)
所以我不知道这是不是一件好事,但看起来很实用。我最后做的是:
我设置了一个会话变量。然后代替
function getComments($conn)
{
$sql = "SELECT * FROM comments";
$result = mysqli_query($conn,$sql);
while($row =$result->fetch_assoc())
{
echo "<div class='comment-box'><p>";
echo $row['uid']." ";
echo $row['date']."<br>";
echo nl2br($row['message']);
echo "</p></div>";
}
}
我做了
function getComments($conn)
{
$sql = "SELECT * FROM comments";
$result = mysqli_query($conn,$sql);
while($row =$result->fetch_assoc())
{
if($_SESSION["repeated"]!=$row['message'])
{
echo "<div class='comment-box'><p>";
echo $row['uid']." ";
echo $row['date']."<br>";
echo nl2br($row['message']);
}
$_SESSION["repeated"]=$row['message'];
echo "</p></div>";
}
}
它似乎绝对有效!它有一个小故障: 如果我在此会话中发布评论后删除了数据库中的所有变量,那么它会在某个时刻再次发布。(不是什么大问题)。 但就是这样。 我是去发布/重定向/获取,但我有点困惑,出于好奇而尝试了这一点。它对我有用。(对我来说)这似乎是一种更简单的方法,还是我没有看到的东西?
答案 1 :(得分:0)
容易修复!!! 将 recuired 添加到表单中
<input type='text' name='emne' placeholder='Subject' required>