веб-страница автоматически отправляется с предыдущими переменными сеанса после обновления

У меня есть веб-страница, которая позволяет пользователям отправлять запросы и получать результаты по электронной почте. Пользователь выбирает значения для трех переменных и адрес электронной почты. Моя проблема заключается в том, что каждый раз, когда я обновляю страницу, форма повторно отправляет себя со старыми значениями и отправляет электронное письмо (т.е. я даже не нажимаю на запрос на отправку). Я пытался использовать $ _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.
Таким образом, каждый раз, когда пользователь обновляет страницу, он снова получает электронное письмо с результатами предыдущего сеанса.
Любое руководство здесь высоко ценится.
Примечание: я не использую почту или pHPmailer здесь, но это не то, что мне нужно обсуждать здесь.

Спасибо,

0

Решение

Взято из этот ответ:

Чтобы пользователи не могли обновить страницу или нажать кнопку «Назад» и повторно отправить форму, я использую следующую небольшую хитрость.

if (!isset($_SESSION)) {
session_start();
}

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

Теперь данные POST находятся в сеансе, и пользователи могут обновлять их сколько угодно. Это больше не будет влиять на ваш код.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector