如何在同一页面上放置两个表单?

2022-08-30 18:44:14

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

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)...

也许,有更好的方法。


答案 1

您可以使用2个不同的操作制作两个表单

<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文件将作为一个开关($_POST['action'])...此外,他们不能同时点击两个链接或同时发出请求,每次提交都是一个单独的请求。

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


答案 2

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

或者对某个输入和基础帖子有不同的值:

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

推荐