2013-04-29 55 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']並在那裏獲得價值並展示它。