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

时间:2012-12-28 14:46:55

标签: php html forms

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

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

可能有更好的方法。

6 个答案:

答案 0 :(得分:33)

你可以用两种不同的动作制作两种形式

<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文件执行登录过程然后注册过程

答案 1 :(得分:8)

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

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

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

答案 2 :(得分:4)

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

表格一键 - btn1 表格二按钮-btn2

PHP代码:

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

答案 3 :(得分:1)

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

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

答案 4 :(得分:0)

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

<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 :(得分:0)

这是带有两个提交按钮的两种形式:

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

这是您的PHP代码:

 let stringParams : String = "<AddressValidateRequest USERID=\"252TEST01629\">" +
        "<Revision>1</Revision>" + "<Address ID=\"0\">" + "<Address1>SUITE K</Address1>"
        + "<Address2>29851 Aventura</Address2>" +
        "</City>"+"<State>CA</State>" + "<Zip5>92688</Zip5>" + "</Zip4>" + "</Address>" +
        "</AddressValidateRequest>"

        let url = URL(string:"http://production.shippingapis.com/ShippingAPI.dll?API=Verify&XML=")
        var xmlRequest = URLRequest(url: url!)
        xmlRequest.httpBody = stringParams.data(using: String.Encoding.utf8, allowLossyConversion: true)
        xmlRequest.httpMethod = "POST"
        xmlRequest.addValue("application/xml", forHTTPHeaderField: "Content-Type")


        self.alamoFireManager.request(xmlRequest)
            .responseData { (response) in
                let stringResponse: String = String(data: response.data!, encoding: String.Encoding.utf8) as String!
                debugPrint(stringResponse)
        }