单一形式的两个动作

时间:2013-08-27 21:51:25

标签: php forms action synology

我想说我已经阅读了所有类似的问题,但找不到我需要的答案。

所以,我在远程主机上有HTML表单,包含用户名,密码和“rememberMe”复选框:

<form method="POST" action="http://1.2.3.4:5000/webman/login.cgi">
    <p><input type="text" name="username" value="" placeholder="Username or Email"></p>
    <p><input type="password" name="passwd" value="" placeholder="Password"></p>
    <p class="remember_me">
      <label>
        <input type="checkbox" name="rememberme" id="remember_me">
        Remember me on this computer
      </label>
    </p>
    <p class="submit"><input type="submit" name="commit" value="Login"></p>
  </form>

我想要做的就是将数据从一个表单提交到另一个表单(另一个表单 - 这是我的Synology NAS登录表单)。但问题是,如果我写action="http://1.2.3.4:5000/webman/index.cgi",它什么都不做(只是把我发送到第二个登录表单)。 但是当我使用action="http://1.2.3.4:5000/webman/login.cgi"时,它会将我转发到login.cgi页面,其中只显示以下内容(使用正确的用户名和密码)

{ "result" : "success", "success" : true }

但是:如果我在浏览器中将login.cgi更改为index.cgi ,那么当我通过默认表单成功登录时,我会转到桌面。

所以,在此基础上,问题是: 如何将数据发送到login.cgi,但是将用户重定向到... / index.cgi?

2 个答案:

答案 0 :(得分:0)

您需要两种形式。你不能拥有表格形式。您需要使用javascript在表单之间复制数据。你可以这样做:

function copydata() {
    document.form1.username.value = document.form2.username.value;
    document.form1.passwd.value = document.form2.password.value;
    return 1;
}

如果我说得对,你可以通过两种不同的操作登录。您只需在单击辅助(提交第二个表单)提交按钮时应用此代码一次。

答案 1 :(得分:0)

<form method="POST" action="http://1.2.3.4:5000/webman/login.cgi">中,您需要在上方添加target="login_iframe"以添加第<iframe id="login_iframe" name="login_iframe" width="0" height="0" frameborder="0" style="display: none;" ></iframe>行。

以下是验证后重定向用户的脚本。请注意,脚本只有一半工作,因为没有条件“如果密码不正确那么它应该弹出题字”

<script>
    $(document).ready(function(){
        $("#login_iframe").on("load", function(){
            location.href = "https://the address of the page/";
        });
    })
    </script>

您应该更改重定向地址。