表单数据未发送到POST

时间:2013-08-25 01:13:58

标签: php forms post

这太荒谬了。我的问题是根据标题。尝试{_ 1}}或var_dump $ _POST超全局产生一个空数组。

看看我的表格:

print_r

我认为没有任何问题。 <form method="post" action="" class="login"> <fieldset> <dl> <dt><label for="loginEmail">Email</label></dt> <dd><input type="email" id="loginEmail" name="loginEmail" maxLength="32" /></dd> <dt><label for="loginPassword">Password</label></dt> <dd><input type="password" id="loginPassword" name="loginPassword" maxlength="64" /></dd> <dt></dt> <dd><input type="submit" value="submit" class="button" /></dd> </dl> </fieldset> </form> 属性完好无损,我发布到同一页面,但POST仍然是空的。值得注意的是,我在另一个具有类似语法的页面上有另一种形式。

例如:

name

不运行。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

尝试打印$_SERVER超全球。除其他外,它包含REQUEST_METHOD键,其值应该可以帮助你...

顺便说一下,空动作属性实际上非常好。我发现即使是稍微老一点的浏览器也能保持一致。

另外,我曾经写过一个对调试很有帮助的小片段...只需将它插入PHP代码的最顶层:

function on_shutdown(){
    echo "<!--\n";
    echo "\n\tHeaders Sent:";
        $file = $line = null;
        headers_sent($file, $line);
        echo "\n\t\t$file: $line";
    echo "\n\tLast Error:";
        if(function_exists('error_get_last') && error_get_last())
            foreach(error_get_last() as $k=>$v)
                echo "\n\t\t$k: $v";
        elseif($php_errormsg)
            echo "\n\t\tError: $php_errormsg";
        else echo "\n\t\tnone";
    echo "\n\tIncluded Files:";
        echo "\n\t\t".implode("\n\t\t", get_included_files());
    echo "\n-->";
}
register_shutdown_function('on_shutdown');
while(ob_get_level())ob_end_clean();
ob_implicit_flush(true);

答案 1 :(得分:0)

我们知道有一种名为DEFAULT的东西

根据w3c:

行动= uri [CT] 此属性指定表单处理代理程序。未定义HTTP URI以外的值的用户代理行为。来源:http://www.w3.org/TR/html401/interact/forms.html

现在回到原点。如果它们都在同一页面上,那么你的代码运行得很好:

<form method="post" action="" class="login">
    <fieldset>
        <dl>
            <dt><label for="loginEmail">Email</label></dt>
            <dd><input type="email" id="loginEmail" name="loginEmail" maxLength="32" /></dd>

            <dt><label for="loginPassword">Password</label></dt>
            <dd><input type="password" id="loginPassword" name="loginPassword" maxlength="64" /></dd>

            <dt></dt>
            <dd><input type="submit" value="submit" class="button" /></dd>
        </dl>
    </fieldset>
</form>

<?php
if (!empty($_POST)) {
  echo '42';
}
    ?>

并在填写值并提交后输出我输出为:

42

当我将php代码更改为:

   <?php
if (!empty($_POST)) {
  var_dump($_POST);
}
       ?>

我的输出为:

 array (size=2)
 'loginEmail' => string 'abc@abc.com' (length=11)
 'loginPassword' => string 'qwerty' (length=6)

清理缓存并重新启动Web服务器。希望它现在可以工作:)

答案 2 :(得分:-1)

您的表单无处可寻。如果您希望它与同一页面相同,请指定

<form action="{$_SERVER['SCRIPT_NAME']}">

将呈现相同的页面,但发送参数。如果您在某处有处理程序脚本,则指定相对URL。