首页 > 解决方案 > 如何使用php一次验证两个表单

问题描述

我有两个表单包含在一个 PHP 文件中。其中一种形式用于“登录”,另一种形式用于“注册”,我有一些 CSS 和 JS 可以直观地切换表单,但不管这两种形式仍然在一个 php 文件中。

这些表格是标准的:

<form action="login.php" method="post" name="user-sign-up">
 <div class="error">
<?php if(!empty($error)){echo $error;} ?>
</div>
          <span>First name</span>
          <input type="text" name="fname" class="fname">
        <input type="submit" value="Sign Up" class="signupdawg" id="firstname-signup"> 
</form>

然后我在那个下面得到了另一个表格。

这是我的 php,它有点工作,只适用于其中一种形式:

if( isset($_POST['fname']) && !empty($_POST['fname'])){

    $upName = $_POST['fname'];

if(empty($upName)){

        $error = 'All fields are required';

我只是缩短了代码,所以它不会占用太多空间。我有其他输入,如密码,但我只是删除了它,因为代码几乎相同,除了我的 php 空检查中有一个“或”,而我的 html 中有几行。

无论如何,我想知道如何使用 PHP 一次验证两个表单。

谢谢你。

标签: phphtmlformsvalidation

解决方案


您一次只能提交一个表单,因此您需要使用表单上的某些内容来确定提交了哪个表单。这只是一个使用您的代码的简单示例:

if(isset($_POST['Sign_Up'])) {
    //do sign up stuff
} 
elseif(isset($_POST['Login'])) {
    //do login stuff
}

通知Sign Up转换为Sign_Up. 最好action在每个表单中使用两个单独的文件并拥有两个不同的文件。

此外,isset这里是多余的:

if( isset($_POST['fname']) && !empty($_POST['fname'])){

已经检查它empty是否已设置,所以只需:

if(!empty($_POST['fname'])){

推荐阅读