【问题标题】:How can I ignore the submit input in a PHP foreach loop如何忽略 PHP foreach 循环中的提交输入
【发布时间】:2021-12-05 18:58:32
【问题描述】:

我想创建一个 PHP foreach 循环,自动循环并检索提交的任何表单数据。问题是:

foreach($_POST as $key => $value) { if(!empty($value)) echo $key. “ - “. $value.”<br>”;

也会打印出最终结果

<input type=“submit” name=“foo” value=“bar”>

输入,我想忽略它。

如果我从输入更改为按钮标签,这会起作用,但是我更喜欢保留输入标签。塔。

【问题讨论】:

  • 您可以随时从输入标签中删除“名称”。但你真的为什么要关心它是按钮还是输入呢?实际差异很小,除非在这种情况下,确实存在的差异可以解决您的问题......除非您有实际原因而不是模糊的突发奇想,否则不要让事情变得更复杂
  • 如何将数组name="data[something]" 用于您要循环的输入,然后您可以循环$_POST['data']
  • 附言。如果您盲目地收集所有表单数据,那么取决于您之后如何处理它,在某些情况下,您的代码可能会受到过度发布攻击。只是需要注意的一点,正如我所说,这取决于具体情况是否真的存在这样的问题
  • 如果您已经能够编写一个仅在 $value 不为空时输出某些内容的条件,那么您应该能够添加第二个条件来检查 $key 是否不为空等于一个特定的字符串值,没有...?

标签: php html forms


【解决方案1】:

从请求中获取所有获取和发布字段

public function getAll()
{
   $request = $_SERVER['REQUEST_METHOD'];
   $data = [];
        if ($request === 'GET') {
            foreach ($_GET as $key => $value) {
                $data[$key] = filter_input(INPUT_GET, $key, FILTER_SANITIZE_SPECIAL_CHARS);
            }
        }
        if ($request === 'POST') {
            foreach ($_POST as $key => $value) {
                $data[$key] = filter_input(INPUT_POST, $key, FILTER_SANITIZE_SPECIAL_CHARS);
            }
        }
        return $data;
}

只取非空文件..do..inside foreach 循环

if(!empty($value))
{
  $data[$key] = filter_input(INPUT_POST, $key, FILTER_SANITIZE_SPECIAL_CHARS);  
}

【讨论】:

    猜你喜欢
    • 2020-03-11
    • 1970-01-01
    • 2013-01-24
    • 1970-01-01
    • 2013-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-26
    相关资源
    最近更新 更多