简体   繁体   English

表单需要在PHP中处理两个提交按钮

[英]Form needs to handle two submit buttons in PHP

In my HTML I have a form where users can register or login.The problem is both Register and Login buttons are in the same form, and they are handled by two scripts: register.php and login.php. 在我的HTML中,我有一个用户可以注册或登录的表单。问题是注册和登录按钮的格式相同,它们由两个脚本处理:register.php和login.php。

In

<form action=" "> 

there could just be one script name. 可能只有一个脚本名称。 So how to make the form able to handle two submit buttons(two scripts)? 那么如何使表单能够处理两个提交按钮(两个脚本)?

  <form action="register.php" method="post" class="login_form">     

    <div class="login_form_input_container">   
      <label for="email" class="login_form_label">Email</label>
      <input type="email" id="email" name="email" class="login_form_input">
    </div>

    <div class="login_form_input_container">  
      <label for="password" class="login_form_label">Password</label>
      <input type="password" id="password" name="password" class="login_form_input">
    </div>

    <a href="forgot_password/" class="forgot_password_link">Forgot password?</a>

    <input type="submit" id="login_submit" name="login_submit" value="Log In" class="login_form_submit">

    <input type="submit" id="register_submit" name="register_submit" value="Register" class="login_form_submit">

  </form>

Create another script register_or_login.php , let that script handle the form submission and make it route to either the login or register backend script: 创建另一个脚本register_or_login.php ,让该脚本处理表单提交并使其路由到登录或注册后端脚本:

if (isset($_POST['login_submit'])) {
    require 'login.php';
} elseif (isset($_POST['register_submit'])) {
    require 'register.php';
}

A button is not much different from, say, a checkbox or textfield; 按钮与复选框或文本字段没有太大区别; if you give it a name it will be present in $_POST . 如果你给它一个名字,它将出现在$_POST

you can just check with isset which one was sent/clicked like so 你可以用isset检查哪一个是这样发送/点击的

if(isset($_POST['login_submit'])){
    //do login
}elseif(isset($_POST['register_submit'])){
    //do register
}

I just thought of this and checked that if a user just hits enter without clicking a submit button it sends the first submit name/value as a default. 我只想到了这一点并检查了如果用户只是点击进入而没有点击提交按钮,它会发送第一个提交名称/值作为默认值。 So in your case login_submit will be sent if user just hits enter which is probably a good thing. 所以在你的情况下,如果用户只是点击输入,将发送login_submit ,这可能是一件好事。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM