【问题标题】:How to validate two forms at once with php如何使用php一次验证两个表单
【发布时间】:2020-07-28 16:47:47
【问题描述】:

我在一个 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 一次验证两个表单。

谢谢。

【问题讨论】:

  • 为每个添加一个隐藏的输入,表示正在提交哪个特定表单。然后关闭它以进行制衡。
  • 通常最好让不同的脚本处理不同的动作。对于类、包含和常见的 html 输出,这不是问题。
  • 您能否阐明“一次验证两个表单”的含义?您是否无法确定发布了哪个表单,或者您是否尝试同时验证两个表单的输入(即使实际上只发布了其中一个)?还是别的什么?
  • 哈哈@那个编辑。别人的改变是多么无用;)
  • @David 提交的那个。所以我无法确定发布了哪种表格

标签: php html forms validation


【解决方案1】:

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

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'])){

【讨论】:

  • $_POST['Sign Up'] 这是否允许?表格帖子中名称中的空格?嗯...从来没有尝试过...只是看起来很乱:-)
  • @IncredibleHat 是的,虽然空间转换为_。我同意,只是举一个使用现有代码的例子。
  • @AbraCadaver 啊...好吧,我会的。什么,20 年了,我从来没有意识到它会这样做哈哈哈我总是用只有 a-z0-9 来命名表单字段:D
  • @IncredibleHat 我能说什么,你每天都在学习新事物 eh
【解决方案2】:

您需要在每个表单的提交按钮上使用唯一值,示例如下 index.html

<form method="post" ...>
...
    <button name="submit" type="submit" value="login">login</button>
</form>

<form method="post" ...>
   ...
    <button name="submit" type="submit" value="sginup">sginup</button>
</form>

PHP 文件


<?php
    if (isset($_POST["submit"])) {
      switch ($_POST["submit"]) {
          case "login":
                login();
              break;
          case "sginup":
               singup();
              break;
          default: 
              break;
      }
    }
?>

【讨论】:

  • 实际上,您可以在表单中使用任何输入的值,而不必是按钮(即您可以使用隐藏的输入字段)。但通常,我更喜欢使用按钮
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-03
相关资源
最近更新 更多