我是否需要在同一页面中为两个 HTML 表单的输入变量添加前缀

Do I need to prefix the input variables for two HTML forms in same page

我有点困惑是否需要在表单输入变量前添加前缀,即('car_',或对应于'car_make'的'bike_',' bike_make') 或者我可以对两种形式使用相同的模板而不添加前缀变量吗?如果是这样,我是否还需要在 'submit' 字段前加上前缀,或者使用不同的表单名称就足以避免数据冲突。

我在同一页上有这两个 HTML 表格:

<form action="" name="car_search_form" method="POST">
<input type="hidden" name="make" value="Audi" />
<input type="submit" name="car_do_search" value="Search Car" />
</form>
<form action="" name="bike_search_form" method="POST">
<input type="hidden" name="make" value="Schwinn" />
<input type="submit" name="bike_do_search" value="Search Bike" />
</form>

所以,最后我想通过以下代码获得 $validCarMake 的正确值:

if(isset($_POST['car_do_search']))
{
     $paramCarMake = isset($_POST['make']) ? sanitize_text_field($_POST['make']) : '';
     $validCarMake = esc_sql($paramCarMake); // For SQL queries only
     // TODO: Add data saving to database
}

另外,我想了解PHP引擎的决策过程。它如何决定选择哪个变量 - 它如何知道我单击了哪个按钮,为什么不直接提交页面上的所有表单?另外,如果我使用 "GET" 方法而不是 "POST" 除了将变量值放入 URL 之外是否会有任何区别? GET 案例如何处理附加图像以形成提交然后(据我所知,最大 URL 长度为 255 个字符,即 JPEG 100 kiB 图像包含数千个字符。我问这个,因为我还希望不仅允许在网站主页上进行搜索,还允许从单独网站的某种小部件进行搜索。

最后一个问题 - 如果 HTML 表单处理在 PHP 7.X 与 PHP 5.X 中有所不同(即 PHP 5.4).我的意思是它是在某处缓存数据,它是通过互联网发送两种形式的附加图像并使用网络和服务器数据,还是它只提交我单击按钮的形式的数据。

只要您将 post arg "make" 的 2 个输入请求分开就完全没问题。如果您在同一个请求中发送参数,则第二个将覆盖第一个,因为它是上次设置的。

至于 php 如何决定优先顺序,它使用所谓的优先顺序。这意味着它首先执行,除非明确告知不要这样做。

I want to understand the decision process of PHP engine. How it does decide which variable to choose - how it know on which button I clicked, and why not it does just submit all forms on the page?

当您单击按钮时,php 将采用在输入字段或单击的按钮的名称 属性 中指定的 <button name="value"> 值。这就是它可以决定要提交的表单的方式。考虑一下,如果您有两个同名的表单分配给提交按钮,第一个将覆盖第二个并且 php 将只提交一个表单。这是因为 php 以逻辑顺序执行操作。