评论系统重新发布评论页面重新加载

时间:2016-10-15 16:37:35

标签: php

我一直在做一个非常简单的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');

非常感谢任何反馈。

2 个答案:

答案 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>