POST请求中具有相同名称的多个变量

POST请求中具有相同名称的多个变量,post,Post,我在一个webbot上工作,遇到了一个奇怪的页面,其中多个变量的名称相同,但值不同,如Firefox web控制台所示。我不确定如何在python中复制这种行为。目前,我正在使用requests库进行post请求,这需要一个名称和值对字典。当然,字典有唯一的键。所以我想知道是否有人能告诉我如何发送带有多个同名变量的post请求 sel_subj:dummy sel_subj:ECE 谢谢, 拉吉夫 编辑:这是导致此问题的html源代码 <input type="hidden" value

我在一个webbot上工作,遇到了一个奇怪的页面,其中多个变量的名称相同,但值不同,如Firefox web控制台所示。我不确定如何在python中复制这种行为。目前,我正在使用requests库进行post请求,这需要一个名称和值对字典。当然,字典有唯一的键。所以我想知道是否有人能告诉我如何发送带有多个同名变量的post请求

sel_subj:dummy
sel_subj:ECE
谢谢, 拉吉夫

编辑:这是导致此问题的html源代码

<input type="hidden" value="dummy" name="rsts"></input>
<input type="hidden" value="dummy" name="crn"></input><br></br>
<input type="hidden" value="120138" name="term_in"></input>

**<input type="hidden" value="dummy" name="sel_subj"></input>**

<input type="hidden" value="dummy" name="sel_day"></input>
<input type="hidden" value="dummy" name="sel_schd"></input>
<input type="hidden" value="dummy" name="sel_insm"></input>
<input type="hidden" value="dummy" name="sel_camp"></input>
<input type="hidden" value="dummy" name="sel_levl"></input>
<input type="hidden" value="dummy" name="sel_sess"></input>
<input type="hidden" value="dummy" name="sel_instr"></input>
<input type="hidden" value="dummy" name="sel_ptrm"></input>
<input type="hidden" value="dummy" name="sel_attr"></input>
<table class="dataentrytable" summary="Table is used to present the course search criteria">     
    <tbody>
        <tr>
            <td class="delabel" scope="row"> … </td>
            <td class="dedefault" colspan="37">

                **<select id="subj_id" multiple="" size="10" name="sel_subj"> … 
                </select>**

             </td>
         </tr>
     </tbody>
</table>



**** … ** … **

请注意,选择标记和高亮显示的输入标记如何具有相同的名称

我知道的唯一方法是使用一个附加了[]的变量名

<input type="hidden" value="dummy" name="sel_subj[]"></input>
<input type="hidden" value="ECE" name="sel_subj[]"></input>

这将导致在
$\u POST['sel\u subj']
中放置一个数组,其中
$\u POST['sel\u subj'][0]
为“虚拟”,而
$\u POST['sel\u subj']
为ECE

现在我认为,当附加了[]时,数组的创建是由php解析器完成的。这表明这两个值都是通过POST发送的,即使名称末尾没有[]。也许可以将PHP配置为不忽略此值。

对于GET变量(在url中),可以使用多个同名值。您可以解析整个url并读取和使用每个值

如果在参数名称中添加
[]
,PHP甚至会自动解决这个问题。在这种情况下,它会自动将其更改为数组。但这也是一个骗局。编写一段代码,使用重复的名称执行相同的操作,而不使用
[]
作为后缀,这相当容易

同样的情况也会发生在post变量中。您可能需要更多的代码来正确地阅读它们

本例中的代码可能会检查是否存在除
dummy
以外的任何值的
sel_sub
。如果是这种情况,则使用该值。如果它不存在,
sel_sub
可能仍然存在,其值为
dummy
。这可能表示脚本已发布表单,但未选择任何值


所以实际上,我认为很容易解释这个脚本是如何工作的,甚至解释为什么,但我不认为以这种方式将所有默认值放在隐藏字段中是一个很好的解决方案,所以我建议您不要尝试复制这个解决方案。:-)

奇怪的问题!网站如何区分不同的变量?如果你做了一个
$\u POST['name']
访问,你大概只能得到其中一个?你知道你正在浏览的网站是如何做到这一点的吗?不幸的是,我没有访问网站源的权限。我一开始也觉得这很令人震惊,但我注意到整个网站上有很多例子,firefox发布了多个同名变量,我可以自信地说网站使用了所有这些变量的值。一定有办法。我可能会尝试建立一个虚拟网站,看看它是如何工作的。