Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php $\u POST变量_Php_Html_Forms_Post - Fatal编程技术网

Php $\u POST变量

Php $\u POST变量,php,html,forms,post,Php,Html,Forms,Post,我遇到了一个问题。我在用Wordpress,但这不是Wordpress的问题 我使用两个表单,一个表单上有所有的输入字段,另一个是隐藏的输入字段,用于检查用户提交的表单。我已将其值保存为“save”。还有另一种形式,它只用于重置所有选项,其值为“重置”。在PHP中,我检查隐藏字段的值并采取相应的操作。但问题是重置功能不起作用 以下是我的表单HTML: <fieldset> <form method="post"> <!-- Some inpu

我遇到了一个问题。我在用Wordpress,但这不是Wordpress的问题

我使用两个表单,一个表单上有所有的输入字段,另一个是隐藏的输入字段,用于检查用户提交的表单。我已将其值保存为“save”。还有另一种形式,它只用于重置所有选项,其值为“重置”。在PHP中,我检查隐藏字段的值并采取相应的操作。但问题是重置功能不起作用

以下是我的表单HTML:

<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
}