我有一个网站,任何访问者都可以订阅接收时事通讯。我每次刷新页面时遇到了重新提交的问题。我通过应用PRG概念解决了这个问题。现在用户从不提交相同的表单两次,我只有一个问题:我设计了表单,当成功/或失败时,输入字段下会显示一条消息。不幸的是,我已经应用了PRG概念,我从未收到任何消息。怎么办?
index.php - 其中我有包含提交表单和消息显示的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');
?>
答案 0 :(得分:2)
将$ mesag放在像这样的查询字符串中
header("Location:index.php?msg=$mesag");
然后在index.php上使用$ _GET ['msg']并在那里获取值并显示它。
答案 1 :(得分:2)
尝试设置一个名为例如的cookie $_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。