Use of http form post

时间:2018-04-16 作者:Bud

我正在将microsoft asp应用程序移植到Wordpress。在其中,我使用了一个具有四个不同排序序列的表单,这将更改用于获取数据的sql选择。下面是我用来设置表单的html:

<form method="post" action="http://xxx.yyy/wp-admin/admin-post.php">
    <td width="60" height="26">
       <input type="submit"  value="Lot #">
       <input type="hidden" name="action" value="member_directory">
       <input type="hidden" name="data" value="1">
    </td>
    <td width="154"         >
       <input type="submit" value="Name">
       <input type="hidden" name="action" value="member_directory">
       <input type="hidden" name="data" value="2">
    </td>       
    <td width="154">
       <input type="submit"  value="Subdivision - Blk / Lot">
       <input type="hidden" name="action" value="member_directory">
       <input type="hidden" name="data" value="3">
    </td>
    <td width="96">
       <input type="submit" value="Address">
       <input type="hidden" name="action" value="member_directory">
       <input type="hidden" name="data" value="4">
    </td>
</form>
在我的admin\\u post函数中,我有$request = $_REQUEST[\'data\'];

无论单击哪个提交按钮$request 是4。

我哪里做错了?

1 个回复
最合适的回答,由SO网友:Cedon 整理而成

老实说,你最好的选择是$_POST 处理此逻辑。在表单中,提交按钮缺少name 允许您执行此操作的属性:

<form method="post" action="http://xxx.yyy/wp-admin/admin-post.php">
    <td width="60" height="26">
       <input type="submit" value="Lot #" name="lot">
    </td>
    <td width="154"         >
       <input type="submit" value="Name" name="name">
    </td>       
    <td width="154">
       <input type="submit"  value="Subdivision - Blk / Lot" name="subdivision">
    </td>
    <td width="96">
       <input type="submit" value="Address" name="address">
    </td>
</form>
因为<td> 元素的值data 可以消除这两个隐藏字段。

然后在处理程序中可以使用if 要检查的报表$_POST 查看单击的提交按钮isset() 功能:

if ( isset( $_POST[\'lot\'] ) {
    $data = 1;
} elseif ( isset( $_POST[\'name\'] ) ) {
    $data = 2;
} elseif ( isset( $_POST[\'subdivision\'] ) ) {
    $data = 3;
} elseif ( isset ($_POST[\'address] ) ) {
    $data = 4;
} else {
    die( \'Invalid Selection\' );
}

// Rest of your handler goes here

结束