当存在隐藏输入类型时,不返回POST数据

Gri*_*are 5 php apache post hidden

我认为我的代码中有错误,或者我的PHP或Apache设置不正确.

当我提交一个带有隐藏字段的表单时,我的$ _POST数组中没有任何数据...

当我在代码中注释掉隐藏字段时,POST数据会正确返回...

HTML表格

<form action='/utils/login.php ' method='POST'>
<table>
    <tr>
        <td colspan='2'>
            Login
        </td>
    </tr>
    <tr>
        <td>
            Username
        </td>
        <td>
            <input type='text' name='userid' value='' size='12' />
        </td>
    </tr>
    <tr>
        <td>
            Password
        </td>
        <td>
            <input type='password' name='password' size='12' />
        </td>
    </tr>
    <tr>
        <td>
            <input type='hidden' name='formtype' value='login' />
        </td>
    </tr>
    <tr>
        <td>
            <input type='submit' value='Submit' />
        </td>
    </tr>
</table></form>
Run Code Online (Sandbox Code Playgroud)

这是在PHP中处理它的代码...

foreach ($_POST as $var => $value) {
     echo "$var = $value<br>";
} 
Run Code Online (Sandbox Code Playgroud)

我在我的服务器上使用PHP 5和Apache 2.2.

有任何想法吗?

编辑...

我把它缩小到这个......

$command = $_POST['formtype'];
Run Code Online (Sandbox Code Playgroud)

当我从$ _POST中删除@符号时,我收到以下错误...

注意:未定义的变量:第17行的C:\ webroot\utils\login.php中的formtype

如果我注释掉该行,POST数据将毫无问题地传递给程序.

Jef*_*ake 2

我建议将您用来显示内容的代码更改$_POST为单个调用:

print_r($_POST);
Run Code Online (Sandbox Code Playgroud)

每当您显示数组的全部内容时,这都比带有 echo 的循环更好,因为它将显示数组每个级别的每个值。

另外,正如评论中提到的,请确保关闭 html 中的表单。