我有一个测验有两个部分。第一部分是表格,第二部分是测验的确认。
表格:The Form
我正在使用POST方法。因此,如果用户提交表单并转到祝贺页面并刷新它,它将继续发送电子邮件。我试图阻止它。
相关PHP:
我正在尝试更改以下代码中的内容:
if($fname <> "" and $lname <> "" and $ydept <> "") {
mail ($myEmail, $mailSubject, $msgBody, $header);
mail ($userEmail, $sentMailSubject, $sentMailBody, $sentHeader);
这样的事情:
if($fname <> "" and $lname <> "" and $ydept <> "") {
mail ($myEmail, $mailSubject, $msgBody, $header);
mail ($userEmail, $sentMailSubject, $sentMailBody, $sentHeader);
header ("redirect me to another php page with the $fname included to be used as a variable");
}
else {
display not complete exam page and redirect me to the form;
}
我希望将$ fname或任何其他变量转移到congratulation.php页面,因此,不是将电子邮件发送到与祝贺页面相同的页面上,它将是一个不同的页面,所以无论多少用户刷新的时间,没有任何反应。
答案 0 :(得分:1)
从您的评论中,“我希望将$ fname或任何其他变量转移到congratulation.php页面”我建议只需将$_POST
数组传递给会话变量,或者执行计算和将必要的数据保存到单独的数组中,并将该数组作为会话变量传递。这有意义吗?
答案 1 :(得分:1)
为了防止用户刷新页面并再次发送电子邮件,您需要做的是重定向到另一个页面。但是,在重定向的网页中,您将使用GET
而不是POST
。
$name = urlencode($name);
$email = urlencode($email);
header("Location: well_done_chap.php?var1=$name&var2=$email");
然后在well_done_chap.php
(或你称之为的任何内容),只需:
if (isset($_GET['var1']) && isset($_GET['var2'])) {
$name = $_GET['var1'];
$email = $_GET['var2'];
// Do your other stuff here
} else {
echo "Invalid access";
}