How to place two forms on the same page?

2020-01-25 07:13发布

I want to place both register and login form on the same page.
They both starts with:

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

so, I need something like:

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

Also how to prevent executing first form if the second is busy, and vice versa (user clicks on both)
My idea is to create a simple variable on starting process, for example $x = 1 and at the end of process $x = 0, so:

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

Probably, there is a better way.

标签: php html forms
5条回答
家丑人穷心不美
2楼-- · 2020-01-25 07:48

Well you can have each form go to to a different page. (which is preferable)

Or have a different value for the a certain input and base posts on that:

switch($_POST['submit']) {
    case 'login': 
    //...
    break;
    case 'register':
    //...
    break;
}
查看更多
狗以群分
3楼-- · 2020-01-25 07:48

You can use this easiest method.

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

查看更多
走好不送
4楼-- · 2020-01-25 07:54

Hope this will help you. Assumed that login form has: username and password inputs.

if(isset($_POST['username']) && trim($_POST['username']) != "" && isset($_POST['password']) && trim($_POST['password']) != ""){
//login
} else {
//register
}
查看更多
The star\"
5楼-- · 2020-01-25 07:56

You could make two forms with 2 different actions

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

Or do this

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

Then you PHP file would work as a switch($_POST['action']) ... furthermore, they can't click on both links at the same time or make a simultaneous request, each submit is a separate request.

Your PHP would then go on with the switch logic or have different php files doing a login procedure then a registration procedure

查看更多
再贱就再见
6楼-- · 2020-01-25 08:02

Give the submit buttons for both forms different names and use PHP to check which button has submitted data.

Form one button - btn1 Form two button -btn2

PHP Code:

if($_POST['btn1']){
    //Login
}elseif($_POST['btn2']){
    //Register
}
查看更多
登录 后发表回答