每次刷新页面时,PHP表单数据都会将输入重新插入Wordpress数据库



我在将信息从HTML表单提交并传递到Wordpress数据库时遇到问题。我正在使用<form method="post">。表单输入已成功插入数据库;但是,当我在浏览器上单击刷新时,上次提交的相同数据会重新插入到表中,并且每次刷新页面时都会这样做。如果我退出浏览器,这将停止错误;但是,我不想每次输入信息时都必须关闭浏览器。

我不确定问题是在HTML中,还是在PHP中。

我还尝试过使用wp_redirect($url); exit;(重定向到同一页面(,希望重定向能清除从第一次提交时就卡在浏览器中的任何代码。然而,这也不能解决问题。

有没有办法清除数据,这样当我按下刷新时,就不会再提交任何数据,直到我手动填写表格,然后重新提交?

我已经尝试在模板页面的HTML部分中对wp_redirect($url); exit;进行编码。我应该把这段代码放在PHP文件的其他地方吗?

我能够通过将wp_redirect( $url); exit();代码放在主题的functions.php文件中来解决这个问题。

if (isset($_POST['submitCOGS'])){
$data = array (
'date' => $_POST['date'],
'source' => $_POST['source'],
'items_purchased' => $_POST['items_purchased'],
'receipt_total' => $_POST['receipt_total'],
);
$table_name = 'cogs';

$result = $wpdb->insert($table_name, $data);
$url = "/wordpress/cost-of-goods-sold";
wp_redirect ( $url );
exit ();
}

现在,当我填写表单并单击提交时,页面会重新加载。如果单击"刷新",则表单不会重新插入数据。

与所有headers函数类似,wp_redirect只能在页面的任何输出之前使用。

有关其他信息,请参阅此答案。

在完成任何输出之前移动wp_redirect,例如在管理POST数据的位置。

此外,如官方文档所示,wp_redirect不会自动退出。你需要在它后面放一个exit();

if ( wp_redirect( $url ) ) {
exit;
}

最新更新