我有一个简单的编码问题。我尝试使用文本框和共享按钮创建一个页面。
当用户单击共享按钮时,文本框中的文本将作为字符串插入名为“posts”的数据库表中。
我使用以下代码。
<?php
if(isset($_POST['share']))
{
$status = $_POST['status'];
$res = mysql_query("insert into `posts`(postid,username,post,pointscollected) values('','$username','$status','')");
if($res)
echo "<script type='text/javascript'>alert('Posted successfully')</script>";
else
echo "<script type='text/javascript'>alert('some error')</script>";
}
else
{
?>
<form action="<?php $_SERVER['PHP_SELF']?>" method="post">
Status : <input type = "text" name ="status">
<input type = "submit" name ="share">
</form>
<?php
}
此解决方案正常,但用户刷新页面时出现问题。浏览器将显示一个消息窗口,要求重新发送信息,这将再次将该帖子提交给表格。然后相同的条目在表格中两次。
我希望用户在提交后保持同一页面。但页面刷新不应显示消息窗口或再次发送信息。
提前致谢!
答案 0 :(得分:11)
分享后重定向用户,使用重定向
header('Location: whatever.php');
exit;
使用此:
<?php
if(isset($_POST['share'])) {
$status = $_POST['status'];
$res = mysql_query("insert into `posts`(postid,username,post,pointscollected) values('','$username','$status','')");
if($res) {
?>
<script type='text/javascript'>alert('Posted successfully')</script>
<?php
header('Location: whatever.php');
exit;
} else {
?>
<script type='text/javascript'>alert('some error')</script>
<?php
header('Location: whatever.php');
exit;
}
}
?>
顺便说一句,最好不要使用javascript警告用户
并且如果使用的话,请继续使用
P.S:您还可以使用JavaScript window.location
答案 1 :(得分:1)
它被称为&#34;重定向后发布&#34;:在您收到帖子请求并对其做了一些有用的事情后,您将用户(通常)重定向回自己的帖子,或者其他任何内容
答案 2 :(得分:1)
您可以尝试在保存帖子的逻辑完成后进行重定向。
header("location: $my_page");
exit();
使用包含代码的页面名称设置变量$ your_page $ my_page ='yourpage.php';
这应该有效:
$my_page = 'your_page.php'
if(isset($_POST['share']))
{
$status = $_POST['status'];
$res = mysql_query("insert into `posts`(postid,username,post,pointscollected) values('','$username','$status','')");
if($res)
{
echo "<script type='text/javascript'>alert('Posted successfully')</script>";
header("location: $my_page");
exit();
}
else
{
echo "<script type='text/javascript'>alert('some error')</script>";
header("location: $my_page");
exit();
}
}
答案 3 :(得分:1)
在您完成插入查询和所有内容后,请使用以下命令切换到另一个页面:
<?php
header('Location: /path/to/yourotherpage.php');
exit();
?>
这是做什么的,它是重定向到另一个页面,它从浏览器的页面“内存”中删除所有POST数据。
在那个页面上,你写了“你的东西已被提交和录制”,无论你想要什么,你的选择。
如果您的用户在该页面刷新,则根本不会插入任何内容。
这应该有效。