1
<form name="register" action="register.php" method="post">
<input type="text" name="fname" id="fname">
<input type="text" name="lname" id="lname">
<input type="text" name="username" id="username">
</form>

<form name="UsernameCheck" action="register.php" method="post">
<input type="hidden" name="username" id="fakeusername">//it will have been give    username value from javascript
<input type="submit" name="checkUsername" id="checkUsername">
</form>

<form name="register" action="register.php" method="post">
<input type="text" name="email id="email">
<input type="submit" name="register" id="Register">

第一种和第三种形式将被 php 视为一种形式,否则它们将被视为不同的形式。我可以通过检查第三种形式的 isset 提交来访问第一种形式的文本字段,因为第一种和第三种形式具有相同的名称。

if(isset($_POST['register']))
{
    $firstname = $_POST['fname'];
}

是否可以访问该值?或者,如果我为两种形式提供相同的 id,那么有可能实现我想要的吗?

4

3 回答 3

4

它们将被视为不同的形式。当您/用户提交第一个表单时,它将从第一个表单发送表单数据,如果第二个表单被提交,它将从第二个表单发送数据。name="register"没有实际影响。

你的第一个公式没有提交按钮,所以它的数据永远不会被发送。网络浏览器从被点击的提交按钮所在的公式发送数据。

如果您有多个action=""指定了相同 url ( ) 的表单,您应该使用隐藏输入来确定提交了哪个公式。您还可以在提交按钮上设置不同的名称,因为这些名称也会发送到服务器,如下所示:

<form action="bla.php">
<input name="some_data" type="text">
<input type="submit" value="Submit form 1" name="submit_1">
</form>

<form action="bla.php">
<input name="some_data" type="text">
<input type="submit" value="Submit form 2" name="submit_2">
</form>

然后你可以通过以下方式在php中查询它:

if (isset($_GET['some_data'])) {
  $form_selected = isset($_GET['submit_1'] ? 1 : 2);
}
于 2013-08-15T12:29:21.843 回答
1

这些表格中的每一个都是完全独立的。表单的“名称”无效。您示例中的第一个和第三个表单将完全分开提交,而不是一起提交。

如果您需要在同一页面上有多个表单,并确定发布了哪个表单,请使用隐藏字段来跟踪它们。

<form name="register" action="register.php" method="post">
    <input type="hidden" name="action" value="form 1">
    <input type="text" name="fname" id="fname">
    <input type="text" name="lname" id="lname">
    <input type="text" name="username" id="username">
</form>

在 PHP 中只需检查$_POST[ 'action' ] == 'form 1'. 每个表单可以有不同的动作名称。

于 2013-08-15T12:30:37.577 回答
0

name属性本身对于元素来说已经过时了(form但对于表单字段来说不是,它一直是必不可少的)。HTML 4.01 规范条款form说:

“<code>name = cdata [CI] 此属性命名元素,以便可以从样式表或脚本中引用它。笔记。包含此属性是为了向后兼容。应用程序应该使用 id 属性来识别元素。”</p>

在 HTML5 草案中,即使是正式规则也不允许使用同名属性。关于 name 属性的 HTML5 子句form说它的值“必须在它所在的表单集合中的表单元素中是唯一的,如果有的话”。这是一个令人困惑的表述,但最安全的做法是假设它在文档的表单元素中必须是唯一的。

于 2013-08-15T12:38:11.993 回答