当前位置: 首页 > 知识库问答 >
问题:

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

穆商震
2023-03-14

我们是否可以将typeHTML输入属性值传递给$_post数组,或者用PHP获取它?

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

我想创建一个表单,其中输入值被提交到$_post,我可以检测该输入的类型,而不需要硬编码/映射单个输入到每个a类型。

通过这种方式,我可以检测字段类型并对其进行操作,而不需要创建一个“映射”,将我的自定义输入(按名称或ID)映射到某种类型,我已经在HTML表单中声明了这种类型。

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

共有2个答案

岑经纶
2023-03-14

好吧,这里是分解;

$_get和$_post是传输方法,所以是PUT和DELETE等。从它中,不管您使用什么方法,它只在客户端工作,只知道将每一个东西映射到序列化的查询字符串中,或者至少读到序列化的查询字符串。

例如:

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

它采用name属性并转换为这个

?fname=ferret

看它连ID属性都不费心。当我们点击submit按钮时,form将只运行每个输入的name属性,并将with值的LHS,并将用户输入作为RHS添加到值中。它根本不会做任何其他事情。

在PHP端,我们询问$_get隧道中是否有查询字符串在请求或$_post隧道中。其中每一个如果有任何查询字符串-强调字串。将字符串解释为数组并提供给您。因此$POST['fname']。看起来像这样

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

所以你想要做的是或者要求做的是...让浏览器改变它的BOM行为--这在真正意义上我们是做不到的;为了使形式添加一些类似的东西。

?fname=ferret,text 

?fname=ferret-text

?fname=ferret/text 

表单默认情况下不会这样做,除非您在提交之前运行自定义函数更新每个查询。这就是我们所说的逃跑,只要有机会,你就会错过100分之三

然后,在php方面,您希望php自己弄清楚斜杠后面是如下所示的类型

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

PHP本身是做不到的,除非你分叉它,定制像facebook一样的东西,然后运行它,或者至少做一些低级别的库,但那也是事后的事。

以防您不想知道XSS和注入是如何发生的。

因此,查询字符串标准是严格的,以保持带有军国主义数据的字符串。

所以,是的,你想要做的隐藏场是一个测试的方法,以实现你想要的。

后树
2023-03-14

我们是否可以将type HTML输入属性值传递给$_post数组,或者用PHP抓取它?

本身不是。

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

这是一种方法

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

通常情况下,您知道给定字段需要的数据类型,因为您不是一般地处理这些数据,所以它很少是有用的特性。

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

没有。

 类似资料:
  • 问题内容: 我有一个使用处理程序发布可运行实例的线程。它工作得很好,但是我很好奇我如何将参数传递给Runnable实例使用?也许我只是不了解此功能的工作原理。 为了避免出现“您为什么需要此问题”的问题,我有一个线程化的动画,必须调出UI线程来告诉它实际绘制的内容。 问题答案: 只需使用接受参数的构造函数实现的类就可以了, 您可以使用参数化构造函数创建Runnable类的实例。

  • 问题内容: 我有这样的表格 我想要的$ _POST输出是一个像 我知道我可以做类似name =“ levels [1] [build_time]”之类的事情,但是由于这些元素是动态添加的,因此很难添加索引。还有其他办法吗? 编辑: 按照建议,我更改了表格。我现在也包含了我的整个HTML,因为我认为这里缺少一些内容。我的HTML现在: 我现在得到的输出是: 编辑2: 根据您的编辑建议,我编辑了表单并

  • 我在石英(Spring启动应用程序)有一个cron工作。我已经为调度器、触发器、cron作业和所有其他bean创建了bean。作业的目的是基于指定的cron表达式运行。但是对于作业的每个新执行,我希望传递一些特定于该作业的数据到作业详细对象。但是目前,当我试图在JobDetailFactory bean中传递这样的数据时,它只被创建一次(第一次),对于作业的所有进一步执行,传递的都是相同的陈旧数据

  • 问题内容: 我正在尝试从多个复选框(id [])发送数据,并在php中创建一个数组“ info”,以允许我为每个值运行一个脚本(但是每次值的数量可能会发生变化),但是我首先尝试显示每个数组值的内容。我不太确定如何放置数组填充行以将所有内容保存到数组。 的HTML 我目前希望的处理代码是- 我需要怎么做才能使表单复选框中的邮件发送内容填充数组信息 任何帮助是极大的赞赏 编辑为澄清。 问题答案: 更改

  • 我有办法 我想知道如果它真的创建了用户,我是否可以对其进行单元测试。但是它没有参数。 我尝试了以下方法: 然而,这实际上让我通过了与扫描仪的争论,这显然是我在测试中无法做到的。还尝试了其他逻辑。我也尝试过使用when(),,,但我找不到解决这个问题的方法,因为我对模仿还比较陌生。 有人能和我分享一些想法吗?

  • 假设我们有一个varargs方法,它接受作为输入。将普通字符串[]数组传递给该函数没有问题,但不幸的是,当该方法以其他字符串开头时,它不起作用: 我知道简单地将静态Strings前缀到列表中并传递它是没有问题的,但是在我的特定fc情况下,我的代码的可读性会受到影响,所以如果可能的话,我希望以任何方式避免这种情况。 有可能吗?