PHP如何重置POST

问题描述 投票:0回答:6

发送表格后,我尝试重置帖子。 在某些线程中,我读到它可能是

$_POST = array();
但是当我尝试它时,它不起作用。

是否有重置 POST 的解决方案?

php post
6个回答
3
投票

为了防止表格被重新提交,你可以这样做——它应该是不言自明的:

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
}

3
投票

您可以按以下方式重置帖子;

 foreach ($_POST as $key => $value) {
    $_POST[$key] = NULL;
 }

方法二:-

unset($_POST);

2
投票

我目前正在研究这个并提出了一个可行的解决方案。

仅仅使用

unset($_POST)
并不能解决问题。仍然有重新发送信息的弹出窗口。重置它的方法其实就是将它发送到另一个页面。这可以通过
header
功能来完成。

  header("Location: " . $_SERVER['PHP_SELF']);

您现在将摆脱消息和您的

$_POST
数据。


0
投票

简单的怎么样

unset($_POST);

0
投票

https://stackoverflow.com/a/45199686/17220395

要重新加载页面保留 POST 数据,请使用:

window.location.reload();

要重新加载页面丢弃 POST 数据(执行 GET 请求),请使用:

window.location.href = window.location.href;

0
投票
<script type="text/javascript">    
if ( window.history.replaceState ) {
    // reset form on refresh.
    window.history.replaceState( null, null, window.location.href );
}
© www.soinside.com 2019 - 2024. All rights reserved.