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

时间:2010-07-13 04:26:19

标签: 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>

以下是在PHP中处理它的代码...

foreach ($_POST as $var => $value) {
     echo "$var = $value<br>";
} 

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

有什么想法吗?

编辑...

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

$command = $_POST['formtype'];

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

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

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

5 个答案:

答案 0 :(得分:2)

我建议您更改正在使用的代码,以便将$_POST的内容显示为一次调用:

print_r($_POST);

无论何时显示数组的全部内容,这都比循环w / echo更好,因为它将显示数组每个级别的每个值。

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

答案 1 :(得分:2)

您从未关闭<form>代码。

我现在看到有人在评论中向我推了一英里。不过,这是正确的答案。

答案 2 :(得分:2)

您是否尝试将隐藏的输入从表格中取出并将其放在打开的表单标记之后?

您也可以使用:

var_dump($_POST);

...查看帖子变量。

此外,如果动态创建任何输入或POST变量可能缺少任何输入......您可以使用:

variable = 'default';
if(isset($_Post['variable'])) $variable = $_POST['variable'];

...动态设置可能存在或不存在的变量。

答案 3 :(得分:1)

我改变了自己的形式与Twig合作。更改后的表单没有使用post发送隐藏的输入值。 如果有人有同样的问题,我通过执行以下操作解决了这个问题。

原来的一行是:

<input hidden name='foo[{{ loop.index }}][id]' value='{{id}}' />

我通过制作type ='hidden'来卖掉它:

<input type='hidden' name='foo[{{ loop.index }}][id]' value='{{id}}' />

答案 4 :(得分:0)

请尝试:

<form action="..." method="post" enctype="application/x-www-form-urlencoded">