【问题标题】:how to use php to get data from a input form preset data?如何使用php从输入表单预设数据中获取数据?
【发布时间】:2020-07-13 19:03:05
【问题描述】:

我在输入字段中有以下预设数据。我想从“validate-item-blank-quantity”->“minAllowed”中获取 20。

是否可以使用 Php 从那里获取价值?

谢谢

    <input type="number" name="qty_custom" id="qty_custom" value="" title="Quantity" class="input-text qty mage-error" data-validate="{"required-number":true,"validate-item-quantity":{"minAllowed":1,"maxAllowed":1000000,"qtyIncrements":1},"validate-item-blank-quantity":{"minAllowed":20,"maxAllowed":1000000,"qtyIncrements":10}}" aria-invalid="true" aria-describedby="qty_custom-error">

【问题讨论】:

  • 您只能使用 php 从该输入字段中获取名称和值

标签: php html field


【解决方案1】:

正如 lewis4 在评论中指出的那样,您只能发送 namevalue 属性。无论如何,您可以使用简单的 JS 来创建新的hidden 字段并与其他属性的数据一起发送。

假设 data-validate 的值始终是有效的 JSON,应该可以:

HTML

<form action="yourscript.php" id="myform" method="post">
    <input type="number" name="qty_custom" id="qty_custom" value="" title="Quantity" class="input-text qty mage-error" data-validate='{"required-number":true,"validate-item-quantity":{"minAllowed":1,"maxAllowed":1000000,"qtyIncrements":1},"validate-item-blank-quantity":{"minAllowed":20,"maxAllowed":1000000,"qtyIncrements":10}}' aria-invalid="true" aria-describedby="qty_custom-error">
    <input type="submit" value="Send">
</form>

<script>
    $('[data-validate]').each(function () {
        let $el = $(this);
        $('#myform').append("<input type='hidden' name='" + $el.attr('name') + '[data-validate]' + "' value='" + $el.attr('data-validate') + "' />");
    });
</script>

PHPyourscript.php

<?php
if (!is_null($_POST) && !is_null($_POST['qty_custom']['data-validate'])) {
    $arr = json_decode($_POST['qty_custom']['data-validate'], true);
    echo "Minimal value is: " . $arr['validate-item-quantity']['minAllowed'], '<br>';
    echo "Maximal value is: " . $arr['validate-item-quantity']['maxAllowed'], '<br>';
}

不要忘记在您的head 中包含 jQuery

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

警告:

请记住,如果您想进行一些服务器端验证,则不应通过您的请求发送它,因为它很容易被操纵,因此可以更改甚至跳过验证。

【讨论】:

  • 谢谢!对于 javascript,myform = 我的表单名称,名称呢?因为我的表单输入字段很少。从您的示例中,我应该将名称更改为 qty_custom 吗?谢谢
  • 对不起,我的示例中有一个修复,当然,使用 JS 创建的字段应该是 hidden 类型。您无需更改该字段的任何名称。该脚本很简单,它会找到所有具有data-validate 属性的字段,并创建具有扩展名称(如somefield[data-validate])的隐藏字段。 myform 是表单的id,在jQuery中,你用$('#myform')选择它
  • 谢谢!这很有帮助,我学到了一些东西!
  • 如果你觉得有用,欢迎采纳。
  • 另外,我在帖子末尾添加了一些警告,请考虑在您的情况下将验证参数从客户端传递到服务器端是否是安全的概念。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-03
  • 1970-01-01
  • 2016-09-19
  • 1970-01-01
相关资源
最近更新 更多