我在php页面中有注释代码
但是当我在发表评论后进行刷新页面时,会发布相同的评论 再次存储在数据库中。 请帮帮我
<?php
mysql_connect("localhost","root","password");
mysql_select_db("comments");
$name=$_POST['name'];
$comment=$_POST['comment'];
$submit=$_POST['submit'];
$dbLink = mysql_connect("localhost", "root", "a12345");
mysql_query("SET character_set_client=utf8", $dbLink);
mysql_query("SET character_set_connection=utf8", $dbLink);
if($submit)
{
if($name&&$comment)
{
$insert=mysql_query("INSERT INTO comment (name,comment) VALUES ('$name','$comment') ");
}
else
{
echo "please fill out all fields";
}}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Comment box</title>
</head>
<body>
<center>
<form action="index.php" method="POST">
<table>
<tr><td>Name: <br><input type="text" name="name"/></td></tr>
<tr><td colspan="2">Comment: </td></tr>
<tr><td colspan="5"><textarea name="comment" rows="10" cols="50"></textarea></td></tr>
<tr><td colspan="2"><input type="submit" name="submit" value="Comment"></td></tr>
</table>
</form>
<?php
$dbLink = mysql_connect("localhost", "root", "a12345");
mysql_query("SET character_set_results=utf8", $dbLink);
mb_language('uni');
mb_internal_encoding('UTF-8');
$getquery=mysql_query("SELECT * FROM comment ORDER BY id DESC");
while($rows=mysql_fetch_assoc($getquery))
{
$id=$rows['id'];
$name=$rows['name'];
$comment=$rows['comment'];
echo $name . '<br/>' . '<br/>' . $comment . '<br/>' . '<br/>' . '<hr size="1"/>'
;
}
?>
</body>
</html>
我正在使用:
$name = isset($_POST['name']) ?
$_POST['name'] : '';
$comment = isset($_POST['comment']) ?
$_POST['comment'] : '';
$submit = isset($_POST['submit']) ?
$_POST['submit'] : '';
但没有福利。
答案 0 :(得分:2)
提交评论后,如果您刷新页面,则表示您正在提交相同的评论。这就是他们重复的原因。
处理此问题的最佳方法是要么将您的INSERT查询放入另一个php文件中,然后在提交或后重定向到评论页面,如果您要保留它在同一个文件中,然后在将注释插入数据库后使用header
函数重定向到同一页面。
一种简单的修复方法:
if($submit)
{
if($name && $comment)
{
$insert=mysql_query("INSERT INTO comment (name,comment) VALUES ('$name','$comment') ");
header( 'Location: http://the url of your page') ;
}
else
{
echo "please fill out all fields";
}
}
请注意您的代码不安全。
答案 1 :(得分:1)
您可以在unset()
查询
$insert
$insert=mysql_query("INSERT INTO comment (name,comment) VALUES ('$name','$comment') ");
unset($_POST['submit']);
header("location:yourfile.php");
答案 2 :(得分:0)
避免这个
$submit = isset($_POST['submit']) ?
$_POST['submit'] : '';
并使用
if(isset($_POST['submit']))
{
//here the insertion query..
}
答案 3 :(得分:-1)
使用帖子完成工作后,您可以使用POST
取消设置unset($_POST)
。
这将清空帖子,刷新不会再次带来值。