【问题标题】:Find input type with PHP使用 PHP 查找输入类型
【发布时间】:2019-11-07 21:05:13
【问题描述】:

我正在寻求您的帮助,因为我想在 PHP 中自动处理表单中的某些内容。

我的目标是了解$_POST 变量的HTML 类型。 比如,如果是<input type="number" name="tata">,在我的PHP处理中,我想将内容转换为(int) $_POST['tata'],并做一些验证。

最终目标是能够对我网站上的所有字段和所有表单使用一次验证,将变量转换为我在将数据发送到数据库之前等待的良好格式。

有没有办法在 PHP 中做到这一点? 我知道我可以使用 jQuery 获取类型,但我想避免这种方法。

感谢您的回答

【问题讨论】:

  • gettype 可能会让您感兴趣
  • 如果type="number"只允许整数,你也可以使用is_numeric($_POST['tata'])检查值是否为数字
  • 发送到服务器的所有值都将被解析为字符串,无论值如何。 PHP 不会知道值 "1337" 是来自 type="number" 还是 type="text" 字段。您可以做的是为每个普通输入字段添加带有输入类型的隐藏字段
  • gettype 对我没有帮助 is_numeric 也对我没有帮助,因为我想在我的所有 POST 字段上使用 foreach 自动进行所有验证@MagnusEriksson,你是对的,这可以是一种方法做我的事谢谢;)

标签: php html post input


【解决方案1】:

发送到服务器的所有值都将被解析为字符串,无论值如何。 PHP 不知道值“1337”是否来自带有type="number"type="text" 字段的输入。这些类型仅适用于客户端上的 UI。

您可以做的是为每个普通输入字段添加带有输入类型的隐藏字段。

例子:

<input type="number" name="num[value]" value="1337" />
<input type="hidden" name="num[type]" value="number" />

如果您对每个输入都这样做,那么您可以验证服务器上的每个值:

// Access a value directly
$type  = $_POST['num']['type'];
$value = $_POST['num']['value'];

// Or iterate through the items and do something
foreach ($_POST as $key => $param) {
    $type  = $param['type'];
    $value = $param['value'];

    // Do your thing...
}

注意

不是一种在服务器上自动验证的安全方式。由于数据来自客户端,因此没有一个是真正可信的。如果有人想发送无效数据,他们只需在发布前更改表单中的类型即可。

【讨论】:

    猜你喜欢
    • 2012-09-30
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    • 2017-09-04
    • 2021-05-31
    • 2012-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多