2013-04-29 54 views
1

我有一个网站,任何访问者可以订阅接收newsletter.I遇到了每当我刷新页面时,我已经重新提交的问题。我通过应用PRG概念解决了它。现在用户永远不会提交相同的表单两次,我只有一个问题:我已经设计了表单,以便当成功/失败时在输入字段下显示一条消息。不幸的是,现在我应用了PRG概念,我从未收到任何消息。该怎么办 ?POST/REDIRECT/GET出了什么问题?

的index.php - 其中i具有包含提交表单和所述消息显示的div

 <div id="newsletter" > 
      <form id="abonat" name="abonat" action="formular.php" method="post" onsubmit="return golire()" autocomplete="on" > 
      <span>Subscribe</span> 
      <input type="text" id="nume" name="nume" placeholder="Name" required /> 
      <input type="email" id="email" name="email" placeholder="Email" autocomplete="off" required/> 
      <input type="submit" value="Subscribe" class="button" style="width:26%;float:left;" /> 

      </form> 
    </div> 

    <div id="mesaj_newsletter"> 
     <span><?php if (isset($mesaj)) echo $mesaj; ?> </span> 
    </div> 

formular.php - 其中所述验证发生,并且该消息被决定

include('conect.php');  
function validEmail($email){ 
    //code that verifies if it is a valid email adress 
} 

if((isset($_POST['email']))&&(isset($_POST['nume']))){ 
    $nume=mysql_real_escape_string($_POST['nume']); 
    $email=mysql_real_escape_string($_POST['email']); 
    $z=1; 
    if(validEmail($email)==TRUE){ 
     $result=mysql_query("SELECT * FROM abonat"); 
     while($data=mysql_fetch_row($result)){ 
       if(($data[1]==$email)||($data[2]==$nume)) 
        $z=0; 
     } 

     if($z==1){ 
      mysql_query("INSERT INTO abonat(email,nume) VALUES ('$email','$nume')"); 
      $mesaj="Your email has been registered"; 
     } 
     else $mesaj="You are already registered"; 
    } 
    else $mesaj="You have not entered a valid email adress"; 
} 
mysql_close($con); 
header('Location:index.php'); 
?> 
+3

你有没有听说过$ _SESSION? – 2013-04-29 10:27:11

回答

2

尝试设置一个名为例如$_COOKIE['status_message'] 60秒超时。

set_cookie('status_message','This is our message',(time()+60)); 

然后当页面刷新时,检查cookie是否有任何数据;

if(isset($_COOKIE['status_message'])){ 
    echo $_COOKIE['status_message']; 
    set_cookie('status_message','',(time()-3600)); 
} 

这将回显任何填充的消息并销毁cookie。

+0

谢谢,它的工作 – George 2013-04-29 10:46:08

+0

没问题,谢谢:) – Dom 2013-04-29 11:22:11

2

把你的$ mesag放在这样的查询字符串中

header("Location:index.php?msg=$mesag"); 

然后在index.php上使用$ _GET ['msg']并在那里获得价值并展示它。