2012-10-02 144 views
3

我有一个简单的编码问题。我尝试使用文本框和分享按钮创建页面。浏览器上的刷新按钮

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

这个解决方案工作正常,但存在当用户刷新该页面的问题。浏览器将显示一个消息窗口,要求重新发送信息,该信息将再次提交该表格。然后同一条目在表中两次

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

在此先感谢!

回答

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; 
     } 
    } 
?> 

而且BTW最好不要使用JavaScript

提醒用户,并且使用大括号如有其他情况,请联系

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

Header Reference

+1

此解决方案正常工作。谢谢! – sumit

+1

@sumit欢迎:) –

+0

如果'header(...);'放在输出之前会更好。虽然它可能以当前形式工作,但如果缓冲区在'header(...);'之前被刷新,它可能会中断。例如,当某人在'

1

它被称为“重定向后发布”:在收到帖子请求并做了一些有用的事情之后,您将用户(通常)重定向回自己的帖子,或其他任何东西。

1

你可以尝试做重定向你的逻辑保存后完成之后。与页面,其中包含您的代码 $ my_page = 'yourpage.php' 的美称

  header("location: $my_page"); 
      exit(); 

设置变量$ your_page;

这应该工作:

$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(); 
     } 
} 
+0

无需为此声明一个变量 –

1

你完成插入您的查询和一切,切换到另一个网页使用后右:

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

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

在该页面上,您可以编写诸如“您的资料已提交和录制”之类的内容,无论您想要什么,您的选择。

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

这应该工作。

相关问题