我有一个网页,允许用户提交查询并通过电子邮件获取结果。用户选择三个变量的值和电子邮件地址。我的问题是,每次刷新页面时,表单都会使用旧值重新提交并发送电子邮件(即,我什至没有单击提交查询)。我尝试使用$ _POST = array(),但仍然无法正常工作。
这是我的代码:
<?php
if(isset($_POST['submit'])){
$varApp= $_POST['App'];
$varConfig = $_POST['Config'];
$varCtrType = $_POST['CtrType'];
$varEmail = $_POST['mailid'];
exec("/py $varApp $varConfig $varCtrType 2>&1",$output );
if ($output[8] == "Empty"){
echo "<div style ='font:22px Arial,tahoma,sans-serif;color:#ff0000'><br>No Data Available! <br></div>";
}
else {
exec(' printf "Please find attached the query result for following selection:\n\nApp: '.$varApp.' \nConfig: '.$varConfig.' \nCounter Type: '.$varCtrType.' \n\n Thanks! " | /bin/mail -s "Database Query Result" -a '.$output[8].' '.$varEmail.' 2>&1', $output2 );
echo "<div style ='font: 18px Arial,tahoma,sans-serif;color:#10ac84'><br><b> Please check your email for result !<b> <br>";
echo '<script language="javascript">';
echo 'alert("Please check your email for result! Submitted Query details: Selected App: '.$varAPP.' Configuration:")';
echo '</script>';
}
$_POST=array();
}
?>
</body>
我在这里没有给出html部分。 因此,每次用户刷新页面时,他都会再次收到包含先前会话查询结果的电子邮件。 非常感谢此处的任何指导。 注意:我在这里不使用mail或pHPmailer,但这不是我在这里讨论的内容。
谢谢
答案 0 :(得分:0)
取自this answer:
为防止用户刷新页面或按“后退”按钮并重新提交表单,我使用了以下整洁的小技巧。
if (!isset($_SESSION)) {
session_start();
}
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$_SESSION['postdata'] = $_POST;
unset($_POST);
header("Location: ".$_SERVER['PHP_SELF']);
exit;
}
?>
POST数据现在处于会话中,用户可以刷新任意数量的内容。它将不再对您的代码产生影响。