Php WordPress插件在页面刷新时丢失$u POST变量
我正在编写一个简单的WordPress插件,用于在wp管理区域的数据库中管理分销商。用户需要先选择State,然后一个列表将显示该类别中的分销商-他们将能够执行CRUD 问题是,select操作起作用,执行回发,然后我进入查询。问题是,当我进行“刷新”时,$\u帖子不是由浏览器发送的。我假设这可能是一个WordPress的东西,因为这通常在正常情况下工作。有什么想法吗 下面是我的示例代码:Php WordPress插件在页面刷新时丢失$u POST变量,php,html,wordpress,post,Php,Html,Wordpress,Post,我正在编写一个简单的WordPress插件,用于在wp管理区域的数据库中管理分销商。用户需要先选择State,然后一个列表将显示该类别中的分销商-他们将能够执行CRUD 问题是,select操作起作用,执行回发,然后我进入查询。问题是,当我进行“刷新”时,$\u帖子不是由浏览器发送的。我假设这可能是一个WordPress的东西,因为这通常在正常情况下工作。有什么想法吗 下面是我的示例代码: function distributor_manager() { global $wpdb,$ta
function distributor_manager() {
global $wpdb,$table_prefix;
$disttable = $table_prefix.'tblDistributors';
echo '<h1>Distributor Manager</h1>';
echo '<form action="tools.php?page=distributor_manager" method="post" name="StateOption">';
echo '<table cellpadding="2" cellspacing="0" border="0">
<tr>
<td valign="middle"><strong>Select State:</strong></td>
<td>
<select name="StateID" onchange="document.StateOption.submit();">
<option value="0"> - SELECT STATE - </option>';
$States = getStates();
foreach ( $States as $abbreviation=>$fullname){
$display = $fullname;
$xID = $abbreviation;
if(isset($_POST['StateID']) && $_POST['StateID'] == $xID){
echo '<option value="'.$xID.'" selected="selected">'.$display.'</option>';
}else{
echo '<option value="'.$xID.'">'.$display.'</option>';
}
}
echo' </select>
</td>
</tr>
</table>';
echo '</form>';
var_dump($_POST);
var_dump($_REQUEST);
if(isset($_POST['StateID']) && $_POST['StateID'] != '0' && !isset($_POST['form']) && !isset($_POST['formAction'])){
if(!preg_match('/[A-Z]{2}/',$_REQUEST['StateID'])){
echo 'ERROR';exit();
}
$sql = "SELECT *
FROM ".$disttable."
WHERE State = %s
ORDER BY CompanyName";
$distributors = $wpdb->get_results( $wpdb->prepare($sql, $_POST['StateID']) );
echo '<div id="distributors">';
echo '</div>';
}
}
功能分配器\u管理器(){
全局$wpdb,$table_前缀;
$disttable=$table_前缀'tblDistributors';
echo“分销商经理”;
回声';
回声'
选择状态:
-选择状态-';
$States=getStates();
foreach($缩写=>$fullname){
$display=$fullname;
$xID=$缩写;
如果(isset($\u POST['StateID'])和&$\u POST['StateID']==$xID){
回显“.$display.”;
}否则{
回显“.$display.”;
}
}
回声'
';
回声';
变量转储($\u POST);
变量转储($\请求);
如果(isset($\u POST['StateID'])和&$\u POST['StateID']!='0'&&!isset($\u POST['form'])和&!isset($\u POST['formAction'])){
如果(!preg_match('/[A-Z]{2}/',$_请求['StateID'])){
回显“错误”;退出();
}
$sql=“选择*
从“$disttable”开始
其中State=%s
按公司名称订购”;
$distributors=$wpdb->get_results($wpdb->prepare($sql,$_POST['StateID'));
回声';
回声';
}
}
我正在回显$u请求和$u帖子。当我进行选择时,这些都有值。如果我刷新浏览器,它们将显示为空,直到我从下拉列表中进行另一选择。除非您提交表单,否则不会发送$\u POST值。如果刷新已发布的表单,则在假定发布后代码未重定向之前,表单将重新发布发布的内容。使用ajax执行
选择或使用会话存储发布的值,并在以后的代码中使用。现代浏览器会显示关于重新加载post请求的警告。您的浏览器很可能不会将重新发送post数据作为默认行为。Augwa。。。浏览器未重新放置。。因此问题就来了。Deadooshka-我使用的是“现代”浏览器。没有关于请求后重新加载的警告。。这也是问题所在。除非您提交表单,否则$u POST值不会被发送。如果刷新已发布的表单,则在假定发布后代码未重定向之前,表单将重新发布发布的内容。使用ajax执行选择或使用会话存储发布的值,并在以后的代码中使用。现代浏览器会显示关于重新加载post请求的警告。您的浏览器很可能不会将重新发送post数据作为默认行为。Augwa。。。浏览器未重新放置。。因此问题就来了。Deadooshka-我使用的是“现代”浏览器。没有关于请求后重新加载的警告。。这也是问题所在。