发送表格后,我尝试重置帖子。 在某些线程中,我读到它可能是
$_POST = array();
但是当我尝试它时,它不起作用。
是否有重置 POST 的解决方案?
为了防止表格被重新提交,你可以这样做——它应该是不言自明的:
function uniquePost($posted) {
// take some form values
$description = $posted['t_betreff'].$posted['t_bereich'].$posted['t_nachricht'];
// check if session hash matches current form hash
if (isset($_SESSION['form_hash']) && $_SESSION['form_hash'] == md5($description) ) {
// form was re-submitted return false
return false;
}
// set the session value to prevent re-submit
$_SESSION['form_hash'] = md5($description);
return true;
}
if (isset($_POST["t_submit"]) && uniquePost($_POST)) {
$ticket_query = $db->prepare("INSERT INTO `ticket` (`Absender`, `Betreff`, `Abteilung`, `Prioritat`, `Erstellt`, `Nachricht`) VALUES (:sender, :betreff, :abteilung, :priority, :datum, :nachricht)");
$ticket_query->execute(array(
'sender' => $_SESSION["id"],
'betreff' => $t_betreff,
'abteilung' => $t_bereich,
'priority' => $t_priority,
'datum' => date('d.m.Y'),
'nachricht' => $t_nachricht
));
// no need to reset the post variables
}
您可以按以下方式重置帖子;
foreach ($_POST as $key => $value) {
$_POST[$key] = NULL;
}
方法二:-
unset($_POST);
我目前正在研究这个并提出了一个可行的解决方案。
仅仅使用
unset($_POST)
并不能解决问题。仍然有重新发送信息的弹出窗口。重置它的方法其实就是将它发送到另一个页面。这可以通过header
功能来完成。
header("Location: " . $_SERVER['PHP_SELF']);
您现在将摆脱消息和您的
$_POST
数据。
简单的怎么样
unset($_POST);
https://stackoverflow.com/a/45199686/17220395
要重新加载页面保留 POST 数据,请使用:
window.location.reload();
要重新加载页面丢弃 POST 数据(执行 GET 请求),请使用:
window.location.href = window.location.href;
<script type="text/javascript">
if ( window.history.replaceState ) {
// reset form on refresh.
window.history.replaceState( null, null, window.location.href );
}