所以我有这两个页面:pageOne.php
和pageTwo.php
。表格是pageOne.php
:
<form method="post" action="pageTwo.php"> .... </form>
并进行所有数据收集-验证-插入并发送邮件pageTwo.php
(我在两个单独的页面中做所有事情的原因是为了避免在页面刷新时重新提交数据......这是我处理的最简单的方法问题)。到目前为止,一切都运行良好。
现在,我想在表单提交后使用警告框显示成功/失败消息,并尝试了一些没有运气的事情。例如,当我在 上尝试此解决方案时pageTwo.php
,没有弹出框出现,我认为那是因为我在header
该页面顶部有这个
<?php header("Location: http://TestPages.com/pageOne.php"); ?>
<?php
if( $_POST ) {
//collect the data
//insert the data into DB
//send out the mails IFF the data insertion works
echo "<script type='text/javascript'>alert('It worked!')</script>";
}else
echo "<script type='text/javascript'>alert('Did NOT work')</script>";
?>
当在 中尝试第二个解决方案时pageOne.php
,每次刷新页面时都会弹出警报框并收到失败消息,即使数据已插入数据库并已发送邮件。pageOne.php
:
<html>
<body>
<?php
if( $GLOBALS["posted"]) //if($posted)
echo "<script type='text/javascript'>alert('It worked!')</script>";
else
echo "<script type='text/javascript'>alert('Did NOT work')</script>";
?>
<form method="post" action="pageTwo.php"> .... </form>
</body>
并在pageTwo.php
:
<?php header("Location: http://TestPages.com/pageOne.php"); ?>
<?php
$posted = false;
if( $_POST ) {
$posted = true;
//collect the data
//insert the data into DB
//send out the mails IFF the data insertion works
} ?>
为什么这个简单的事情不起作用:(?有什么简单的方法可以解决吗?谢谢!!
更新
所以我根据drrcknlsn的建议做了一些改变,这就是我到目前为止所拥有的...... pageOne.php
:
<?php
session_start();
if (isset($_SESSION['posted']) && $_SESSION['posted']) {
unset($_SESSION['posted']);
// the form was posted - do something here
echo "<script type='text/javascript'>alert('It worked!')</script>";
} else
echo "<script type='text/javascript'>alert('Did NOT work')</script>";
?>
<html> <body>
<form method="post" action="pageTwo.php"> .... </form>
</body> </html>
和pageTwo.php
:
<?php
session_start();
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$_SESSION['posted'] = true;
//collect the data
//insert the data into DB
//send out the mails IFF the data insertion works
header('Location: http://TestPages.com/pageOne.php');
exit;
} ?>
通过这些更改,现在页面的重定向和成功消息正在工作,但是每次打开/刷新页面时我都会收到失败消息(我知道那是因为尚未设置会话密钥)......我该如何避免呢?再次感谢!!