【问题标题】:How to place two forms on the same page?如何将两个表单放在同一个页面上?
【发布时间】:2012-12-13 19:43:03
【问题描述】:

我想将注册和登录表单放在同一个页面上。
它们都以:

开头
if (!empty($_POST)) ... 

所以,我需要类似的东西:

if (!empty($_POST_01))...  // regForm
  and 
if (!empty($_POST_02))...  //loginForm

如果第二个表单很忙,如何防止执行第一个表单,反之亦然(用户同时点击)
我的想法是在启动过程中创建一个简单的变量,例如$x = 1,在过程结束时创建$x = 0,所以:

if ((!empty($_POST_01)) And $x = 0)...

或许,有更好的办法。

【问题讨论】:

  • 所以你的问题不是如何将两个 HTML 表单元素放在同一个页面上,而是如何处理来自使用相同 PHP pgae 提交不同表单的请求,不是吗?
  • @ppeterka,是的,就是这样。

标签: php html forms


【解决方案1】:

你可以用两个不同的动作制作两个表格

<form action="login.php" method="post">
    <input type="text" name="user">
    <input type="password" name="password">
    <input type="submit" value="Login">
</form>

<br />

<form action="register.php" method="post">
    <input type="text" name="user">
    <input type="password" name="password">
    <input type="submit" value="Register">
</form>

或者这样做

<form action="doStuff.php" method="post">
    <input type="text" name="user">
    <input type="password" name="password">
    <input type="hidden" name="action" value="login">
    <input type="submit" value="Login">
</form>

<br />

<form action="doStuff.php" method="post">
    <input type="text" name="user">
    <input type="password" name="password">
    <input type="hidden" name="action" value="register">
    <input type="submit" value="Register">
</form>

然后你的 PHP 文件将作为 switch($_POST['action']) 工作......此外,他们不能同时点击两个链接或同时发出请求,每次提交都是一个单独的请求.

然后您的 PHP 将继续执行切换逻辑或让不同的 php 文件执行登录过程然后是注册过程

【讨论】:

  • 更好地描述他为什么需要这样做会很好,否则+1
  • cristi_b,我知道。谢谢。我认为 - 解决了。顺便说一句,原因是 - 一致的设计。
  • 你可以实现我的版本或 Neal 提出的,一个带有 2 个提交按钮(注册和登录)的表单
  • @cristi_b,有趣的想法。也许我会试试。
  • 谢谢,这正是我所需要的。
【解决方案2】:

您可以让每个表单转到一个不同的页面。 (这是最好的)

或者对某个输入有不同的值并以此为基础:

switch($_POST['submit']) {
    case 'login': 
    //...
    break;
    case 'register':
    //...
    break;
}

【讨论】:

  • 是的,相同的页面,不同的提交按钮在同一个表单上具有不同的值......比我的解决方案好一点
  • 我注意到这里,当屏幕上出现答案时,已经-1投票了!!?
  • 你忘了添加隐藏输入
【解决方案3】:

为两个表单的提交按钮指定不同的名称,并使用 PHP 检查哪个按钮提交了数据。

形成一个按钮 - btn1 表单二按钮-btn2

PHP 代码:

if($_POST['btn1']){
    //Login
}elseif($_POST['btn2']){
    //Register
}

【讨论】:

    【解决方案4】:

    您可以使用这个最简单的方法。

    <form action="validator.php" method="post" id="form1">
        <input type="text" name="user">
        <input type="password" name="password">
        <input type="submit" value="submit" form="form1">
    </form>
    
    <br />
    
    <form action="validator.php" method="post" id="form2">
        <input type="text" name="user">
        <input type="password" name="password">
        <input type="submit" value="submit" form="form2">
    </form>

    【讨论】:

    • 非常简单的解决方案。
    【解决方案5】:

    希望这会对您有所帮助。假设登录表单有:用户名和密码输入。

    if(isset($_POST['username']) && trim($_POST['username']) != "" && isset($_POST['password']) && trim($_POST['password']) != ""){
    //login
    } else {
    //register
    }
    

    【讨论】:

    • 如果注册表也有用户名和密码字段怎么办?我认为注册表确实通常有那些......
    • @ppeterka,是的,两种形式都有用户名和密码字段
    • 我知道这不好假设,但他没有提供太多信息,所以我认为他有一个带有两个 div(登录、注册)的表单,当他点击提交时,他必须检查发布数据。以这种方式操作不是一个好主意,但希望我的简单代码对他有用。
    • 如果他想按照他所表达的方式去做,他必须使用不同的名字。例如在注册表中更改名称:new_username、new_password、confirmed_pa​​ssword。
    【解决方案6】:

    这里有两个带有两个提交按钮的表单:

    <form method="post" action="page.php">
      <input type="submit" name="btnPostMe1" value="Confirm"/>
    </form>
    
    <form method="post" action="page.php">
      <input type="submit" name="btnPostMe2" value="Confirm"/>
    </form>
    

    这是你的 PHP 代码:

    if (isset($_POST['btnPostMe1'])) { //your code 1 }
    if (isset($_POST['btnPostMe2'])) { //your code 2 }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-20
      • 1970-01-01
      • 2012-11-29
      相关资源
      最近更新 更多