我在将信息从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;
}