0

我制作了一个简单的评论系统。当我重新加载页面时,第一次插入的评论被复制了。我应该使用标头通过 request_uri 重定向吗?我这样做了,它变成了一个标题循环。提前致谢

public function comment($username, $comment, $code)
        {
            if(!empty($username) && !empty($comment) && !empty($code))
            {
                $date =date("Y-m-d H:i:s");
                if($insert = $this->db->prepare("INSERT INTO reviews (username, comment, time) VALUES (?, ?, ?)"))
                {
                    $insert->bind_param('sss', $username, $comment, $date);
                    $insert->execute();
                }
                else
                {
                    echo "iets gaat mis met inserten";
                }
            }
            else
            {
                echo "missing fields";
            }
        }

public function retrieve()
                {
                    if($retrieve = $this->db->query("SELECT username, comment, time FROM reviews ORDER BY id LIMIT 0, 5"))
                    {
                            while($row = $retrieve->fetch_assoc())
                            {
                                $output .= '<div class="comment">';
                                $output .= '<div class="name">'.$row['username'].'</div>';
                                $output .= '<div class="date">Added at '.date('H:i \o\n d M Y',strtotime($row['time'])).'"></div>';
                                $output .= '<p>'.$row['comment'].'</p>';
                                $output .= '</div>';
                            }
                            return $output;

                    }

                }

<?php
$reizen= new reizen;
echo $reizen->retrieve();
?>
<script type="text/javascript">
</script>
<?php
$output = '';
$output .= '<div id="contactform">';
$output .= '<form name="form" id="form" action="index.php?page=review" method="post">';
$output .= '<label>Name:</label>';
$output .= '<input type="text" name="username" />';
$output .= '<label>comment</label>';
$output .= '<textarea name="comment" rows="20" cols="20"></textarea>';
$output .= '<label><img src="captcha.php"></label>';
$output .= '<input type="text" name="code">';
$output .= '<input type="submit" class="submit" name="submit" value="Send message" />';
$output .= '</form>';
$output .= '</body>';
$output .= '</div>';
$output .= '</html>';
echo $output;
if(isset($_POST['submit']))
{
  $username = $_POST['username'];
  $comment = $_POST['comment'];
  $code = $_POST['code'];
  $reizen->comment($username, $comment, $code);
}
?>
4

1 回答 1

-1

你能给我们提示一下你如何显示 $input 吗?

也通过复制你的意思是html复制或表单仍然包含相同的评论?如果是这样,您可以将 attr autocomplete="false" 添加到提交评论的输入中以避免这种情况。

因为您的数据库也在重复。那么请向我们展示您的表单工作流程。因为有些地方你两次调用评论功能..

一个好主意是在两个用户名、post_id、comment 上放置唯一键,这样用户就不能对同一个帖子说两次完全相同的评论。根据您目前的情况,当您的代码尝试重新提交相同的评论两次时,此唯一键将触发错误,并且您将能够在发生这种情况时识别。


用于调试


- 做独特的关键技巧来帮助你在问题发生时触发错误。

-u 在页面末尾调用comment() 函数.. 和检索函数BEFOREIT

所以你要做的是加载所有旧评论然后添加该评论(除非你刷新它不会显示)来修复你if($_POST['submit'])在调用数据库中的所有评论之前的移动

于 2013-02-23T15:32:32.587 回答