刷新后,网页会自动提交以前的会话变量



我有一个网页,允许用户提交查询并在电子邮件中获得结果。用户为三个变量和电子邮件地址选择值。我的问题是,每次刷新页面时,表单都会重新提交旧值并发送电子邮件(即,我甚至没有点击提交查询(。我尝试使用$_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:nnApp: '.$varApp.'  nConfig: '.$varConfig.' nCounter Type: '.$varCtrType.' nn 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部分。因此,每次用户刷新页面时,他都会再次收到一封包含先前会话查询结果的电子邮件。非常感谢这里的任何指导。注意:我在这里没有使用邮件或pHPmailer,但这不是我需要在这里讨论的。

谢谢,

取自这个答案:

为了防止用户刷新页面或按下后退按钮重新提交表单,我使用了以下巧妙的小技巧。

if (!isset($_SESSION)) {
session_start();
}
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$_SESSION['postdata'] = $_POST;
unset($_POST);
header("Location: ".$_SERVER['PHP_SELF']);
exit;
}  
?>

POST数据现在处于会话中,用户可以随心所欲地刷新。它将不再对您的代码产生影响。

最新更新