这太荒谬了。我的问题是根据标题。尝试{_ 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
不运行。
有什么想法吗?
答案 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。