2

我有一个简单的编码问题。我尝试创建一个带有文本框和共享按钮的页面。

当用户单击共享按钮时,文本框中的文本将作为字符串插入名为“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
    }

此解决方案工作正常,但用户刷新页面时出现问题。浏览器将显示一个消息窗口,要求重新发送信息,这会将帖子再次提交到表中。然后同一个条目在表中出现两次

我希望用户在提交后留在同一页面上。但是页面刷新不应显示消息窗口或再次发送信息。

提前致谢!

4

4 回答 4

10

分享后重定向用户,使用redirect

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 提醒用户

如果其他情况,请使用大括号

PS:您还可以使用 JavaScript 重定向用户window.location

标头参考

于 2012-10-02T08:57:59.320 回答
0

在您完成插入查询和所有内容后,立即使用以下命令切换到另一个页面:

<?php
header('Location: /path/to/yourotherpage.php');
exit();
?>

它的作用是重定向到另一个页面,这会从浏览器的页面“内存”中删除所有 POST 数据。

在该页面上,您写下诸如“您的东西已提交并记录”之类的内容,无论您想要什么,您都可以选择。

如果您的用户在该页面上刷新,则根本不会插入任何内容。

那应该行得通。

于 2012-10-02T09:14:23.683 回答
0

您可以在保存帖子的逻辑完成后尝试进行重定向。

            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();
        }
}
于 2012-10-02T09:08:23.103 回答
0

它被称为“redirect-after-post”:在您收到 post 请求并对其进行了一些有用的操作后,您(通常)将用户重定向回他们自己的帖子,或其他任何内容。

于 2012-10-02T08:57:00.000 回答