Php $\u POST变量
我遇到了一个问题。我在用Wordpress,但这不是Wordpress的问题 我使用两个表单,一个表单上有所有的输入字段,另一个是隐藏的输入字段,用于检查用户提交的表单。我已将其值保存为“save”。还有另一种形式,它只用于重置所有选项,其值为“重置”。在PHP中,我检查隐藏字段的值并采取相应的操作。但问题是重置功能不起作用 以下是我的表单HTML:Php $\u POST变量,php,html,forms,post,Php,Html,Forms,Post,我遇到了一个问题。我在用Wordpress,但这不是Wordpress的问题 我使用两个表单,一个表单上有所有的输入字段,另一个是隐藏的输入字段,用于检查用户提交的表单。我已将其值保存为“save”。还有另一种形式,它只用于重置所有选项,其值为“重置”。在PHP中,我检查隐藏字段的值并采取相应的操作。但问题是重置功能不起作用 以下是我的表单HTML: <fieldset> <form method="post"> <!-- Some inpu
<fieldset>
<form method="post">
<!-- Some input fields here-->
<p class="submit">
<input name="save" type="submit" value="Save changes" />
<input type="hidden" name="action" value="save" />
</p>
</form>
</fieldset>
<fieldset>
<form method="post">
<p class="submit">
<input name="reset" type="submit" value="Reset" />
<input type="hidden" name="action" value="reset" />
</p>
</form>
</fieldset>
问题是,如果我将'reset'
或'save'
文本更改为'reseta'
或'saveasdfasd'
,$\u POST
变量不会为空,但如果我不更改,则$\u POST
变量为NULL
你知道为什么会发生这种情况吗?我知道你说$\u POST为null,但你是在假设还是真的检查了$\u POST==null?您是否尝试过使用var_dump($_POST)来精确打印发送的内容?只要把你的回复注释掉,看看$u帖子里有什么。也许这会让你对正在发生的事情有一个更好的线索。[旧答案编辑] 编辑 首先尝试隔离您的测试环境。这给了我预期的结果
<?php
if ( isset( $_POST['action'] ) )
{
switch( $_POST['action'] )
{
case 'save':
echo 'Save Action Requested';
break;
case 'reset':
echo 'Reset Action Requested';
break;
default:
echo 'Unknown action requested:';
var_dump( $_POST['action'] );
}
} else {
echo 'No action parameter received';
}
?>
<fieldset>
<form method="post">
<!-- Some input fields here-->
<p class="submit">
<input name="save" type="submit" value="Save changes" />
<input type="hidden" name="action" value="save" />
</p>
</form>
</fieldset>
<fieldset>
<form method="post">
<p class="submit">
<input name="reset" type="submit" value="Reset" />
<input type="hidden" name="action" value="reset" />
</p>
</form>
</fieldset>
简单。。。删除隐藏的输入,并将两个“提交”按钮更改为名称相同但值不同:
<input type="submit" name="action" value="Reset" />
<input type="submit" name="action" value="Save" />
你可能想把整件事都写进:
if (isset($_POST['action'])) {
// Put your form handling here
}
如果您在一个页面上有多个表单,我建议您将每个表单发送到不同的URL。这是迄今为止最简单、最可靠的检测表单去向的方法,只需使用两个不同的脚本来处理表单。然后,您可以包含或重定向到希望用户看到的最后一页。这可能是因为存在同名的重复元素。
你能试着在你的表单中添加一个id或名称吗?你能在Wordpress之外重新创建它吗?我不知道,但是Wordpress是否有可能在处理可能损坏的输入时对$\u POST和$\u GET的内容做些什么?WordPress是否有自己的机制来检索表单值,您可以尝试吗?您的页面上是否出现异常?如果是的话,你能把它添加到你的问题中吗?我不知道$\u POST变量如何会因为您更改代码中的字符串文字而突然变为null,因此我想知道您的问题是否真的是诊断以外的问题。或者你的措辞很混乱。这很可笑,如果你有多语言网站呢?那么每种语言的提交按钮的值都是不同的?好吧,当我点击重置按钮时,我不想要第一个表单的数据,这并没有回答我的问题:很抱歉,我想我理解了你的问题的性质,但是在第二次阅读之后,我意识到我没有注意到你的问题。我的答案被删去了。“UBOBAN——这不是荒谬的。它是用JavaScript实现多提交按钮表单W/O的唯一方法。此外,对于一个多语言网站,你将有一个I18NDA的商店。ta所以用某种反向查找来规范提交的值是很简单的。完成了,但仍然不起作用。我想这是Wordpress的问题,因为没有Wordpress我无法复制行为谢谢大家
if ($_POST['action'] === 'Reset') {
// Do a reset here
} else {
// Do a save here
}
if (isset($_POST['action'])) {
// Put your form handling here
}