Php WordPress插件在页面刷新时丢失$u POST变量

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

我正在编写一个简单的WordPress插件,用于在wp管理区域的数据库中管理分销商。用户需要先选择State,然后一个列表将显示该类别中的分销商-他们将能够执行CRUD

问题是,select操作起作用,执行回发,然后我进入查询。问题是,当我进行“刷新”时,$\u帖子不是由浏览器发送的。我假设这可能是一个WordPress的东西,因为这通常在正常情况下工作。有什么想法吗

下面是我的示例代码:

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-我使用的是“现代”浏览器。没有关于请求后重新加载的警告。。这也是问题所在。