繁体   English   中英

有没有办法将 **type** HTML 输入属性值传递给 HTML/PHP 表单中的 $_POST 数组?

[英]Is there a way to pass the **type** HTML input attribute value to the $_POST array in a HTML/PHP Form?

我们能否以某种方式将 HTML type的输入属性值传递给 $_POST 数组,或者使用 PHP 以其他方式获取它?

我知道我可以创建一个隐藏字段并将实际输入的类型基本上放入隐藏字段的值中,但这对我来说似乎有点像“重复”工作。

我想创建一个表单,其中输入值提交到 $_POST并且我可以检测该输入的类型,而无需将单个输入硬编码/映射到每个类型。

通过这种方式,我可以检测字段类型并采取行动,而无需创建将我的自定义输入(按名称或 ID)映射到某种类型的“映射”,无论如何我已经以 HTML 形式声明了该类型。

在表单提交中无法检测到输入的类型似乎是一个真正的缺点 - 或者(希望)我错过了什么?

我们能否以某种方式将 HTML 类型的输入属性值传递给 $_POST 数组,或者使用 PHP 以其他方式获取它?

不是本身。

我知道我可以创建一个隐藏字段,基本上将真实输入的类型放入隐藏字段的值中

这是一种方法。

在表单提交中无法检测到输入的类型似乎是一个真正的缺点

通常你知道给定字段的数据类型是什么,因为你不是一般地处理它们,所以它很少是一个有用的特性。

也许(希望)我错过了什么?

不。

好吧,这是细分;

从Z2FEC392304A5C23AC138DA222847F9B7CZ访问并通过$ _POST访问Z2FEC392304A5C23AC1138DA2222847F9B7CZ仅在Z29230111111中,仅在Z2923011111上使用Z,因此仅在Z2923847 c中使用Z,因此仅在Z292301111上使用Z,因此仅在Z29238DAC11上使用,并且仅适用于客户端,并在deledy中访问了您,并且仅在deleds上使用,并且从Z2FEC392304A5C23AC138DA222847F9B7CZ进行访问,并仅适用于cointer of tock youts,它只是在delets等。将其中的内容转换为序列化的查询字符串,或者至少将其读取以进行序列化。

例如

<input type="text" id="firstname" name="fname">

它采用 name 属性并转换为此

?fname=ferret

看到它甚至没有打扰 ID 属性。 当我们点击提交按钮时,表单将只运行每个输入的名称属性,并使 LHS 具有值并将用户输入作为 RHS 添加到值中。 它根本不会做任何其他事情。

在 PHP 方面,我们询问 $_GET 隧道请求或 $_POST 隧道中是否有任何查询字符串。 如果有任何查询字符串,这些中的每一个 - 强调单词字符串。 将字符串分解为数组并提供给您。 因此 $POST['fname']。 看起来像这样

$_POST = [
fname => 'ferret',
someothingelse => 'someothervalue']

所以你想要做的是或者至少要求做的是……让浏览器改变它的 BOM 行为——我们不能真正意义上的这样做; 使表单添加这样的东西。

?fname=ferret,text 

?fname=ferret-text

?fname=ferret/text 

默认情况下,表单不会执行此操作,除非您运行自定义 function 在提交之前更新每个查询,这与我们所说的 escaping 一致,如果有机会,您会错过 3/100 次

然后在 PHP 方面,您希望 PHP 自己弄清楚斜线之后的类型是这样的

$_POST = [
fname => 'ferret/text']

PHP 不会自己做到这一点,除非你分叉它像 Facebook 所做的那样定制,然后运行它,或者至少制作某种低级库,但这也是事后的事。

如果您不知道,那就是 XSS 和注入的发生方式。

所以查询字符串标准是严格的,以保持带有军国主义数据和序列化的字符串。

因此,是的,您打算对隐藏字段执行的操作是一种经过测试的实现您想要的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM