使用多个表单的未定义索引

时间:2013-01-04 21:58:30

标签: php

这是我的问题: 我在同一页面上有两个表单。 第一种形式工作正常。 但每当我点击第二张表格上的提交按钮时,我都会收到两条通知。 第一个说“未定义的索引:电子邮件”,指的是“$ email = $ _POST [”email“];”在我的编码。 第二个说“未定义的索引:密码”,指的是“$ password = $ _POST [”password“];”在我的编码。 我不希望我的第二个表单受到我为第一个表单创建的所有“if语句”的影响。我将很快为第二种形式创建更多“if语句”。 例如,当我点击第二个表单上的提交按钮时,它回显“你需要输入一个电子邮件和密码”,这是我只想应用于第一个表单的错误。

所以我的问题是:我怎样才能让表格只受特定的“if语句”组的影响?就像在css编码中你应用id一样,但我会对表格或“if语句”做什么,所以“if语句”只影响特定表格?

以下是编码:

<form action="login.php" method="post">
        <ul id="login">
            //login information
            <li id="loginn">
                <input type="submit" value="Log in">
            </li>
        </ul>
</form>

 <form action="" method="post"> 
        <ul id="register">
                     //register info list items
                             <li>
                <input type="submit" value="Sign up">
            </li>
        </ul>
</form>

<?php

if (empty($_POST) === false) {
$email = $_POST["email"];
$password = $_POST["password"];

if (empty($email) === true || empty($password) === true) {
    $errors[] = "You need to enter an email and password.";
} else if (user_exists($email) === false) {
    $errors[] = "The email you entered is not in our records. Have you registered?";
} else if (user_active($email) === false) {
    $errors[] = "Go to your email, open the email we sent you,and activate your account.";
} else {$login = login($email, $password);
    if ($login === false) {
        $errors[] = "That email/password combination is incorrect.";
    } else {
        $_SESSION['users_id'] = $login;
        header('Location: homepage.php');
        exit();
    }
}

} 

if (empty($errors) === false) {

?>

<?php
echo output_errors($errors);
}
?>

1 个答案:

答案 0 :(得分:1)

您可以使用表单的名称添加<hidden>表单字段:

  <input type="hidden" name="formname" value="form1">

然后,在PHP中,使用它来辨别表单:

  if ($_POST['formname'] == "form1") {
      // ifs for first form
  }

(注意此代码中没有任何错误检查!)