Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用post重定向并获得重定向成功_Javascript_Html_Perl_Redirect_Post - Fatal编程技术网

Javascript 使用post重定向并获得重定向成功

Javascript 使用post重定向并获得重定向成功,javascript,html,perl,redirect,post,Javascript,Html,Perl,Redirect,Post,比如说,我在我的网站上有一个简单的表单,有三个字段:姓名、密码和电子邮件 我必须从用户那里获得这些信息,并保存在我的数据库中 然后重定向到另一个网站,并使用post发送所有这些信息 我还必须知道用户是否成功重定向到该站点(HTTP状态200) 我是这样做的: 对于第1点,我只是提交表格 数据成功保存到数据库中后,我将使用隐藏字段呈现以下表单。此文件将被提交,用户将被重定向到AnotherWeb.com <form id="form_id" action="https://www.a

比如说,我在我的网站上有一个简单的表单,有三个字段:姓名、密码和电子邮件

  • 我必须从用户那里获得这些信息,并保存在我的数据库中
  • 然后重定向到另一个网站,并使用post发送所有这些信息
  • 我还必须知道用户是否成功重定向到该站点(HTTP状态200)
  • 我是这样做的:

    对于第1点,我只是提交表格

    数据成功保存到数据库中后,我将使用隐藏字段呈现以下表单。此文件将被提交,用户将被重定向到AnotherWeb.com

        <form id="form_id" action="https://www.anotherwebsite.com/form" method="POST">
        <input type ="hidden" name ="name" value ="$name">
        <input type ="hidden" name ="password" value ="$password">
        <input type ="hidden" name ="email" value ="$email">
        </form>
        <script> document.getElementById('form_id').submit();  </script>
    
    
    document.getElementById('form_id').submit();
    
    问题

  • 我认为我实现第1点和第2点的策略不正确。我需要一个更好的解决方案。提交表单,然后呈现一个带有隐藏字段的页面,然后再次提交以重定向到另一个站点,这让人感觉不对劲

  • 我没有达到第三点的线索


  • 根据您的问题,您可以尝试以下方法:

  • 在文件(HTML)中创建包含名称、密码、电子邮件字段的表单
  • 将表单提交到服务器
  • 在服务器端获取数据(包括变量中的form属性)并将其保存到数据库中
  • 然后重定向到给定的网站(使用步骤3中存储的变量)

  • 您可以使用任何服务器端脚本语言轻松了解状态(202或任何错误)。

    要实现第3点,如果您实际尝试实现登录兼成员EA系统,则需要使用cookie。否则,您只需要在条件语句中进行重定向

    my $cgi = CGI->new; 
    if (condition) { print $cgi->redirect('https://www.examplesite.com/file.html') }
    
    有关执行第1-2点的一般方法,您可以在此处查看教程:

    如果您正在将用户发送到另一个网站,则知道该用户已成功重定向的唯一方法是该网站以某种方式通知您。一旦用户离开您的页面(这就是重定向——它告诉浏览器“离开此URI,转到此URI”),该页面上的脚本将停止运行,因此它们无法收集任何进一步的信息

    如果您只需要知道信息已成功提交,您的脚本可以在后台发布数据,等待200响应,然后在信息提交后重定向。但这可能不符合您的要求,因为您仍然不知道重定向是否成功

    另一种允许您知道是否正确加载了其他站点上的页面的可能性是在新的浏览器窗口/选项卡中打开它,而不是重定向。这是在加载另一个页面时保持页面活动(从而使脚本能够运行)的唯一方法。但是,它引入了其他问题,比如如何处理原始页面。(在后台保持打开状态(可能会让用户感到困惑)或在看到新URI已加载后自行关闭(当一个窗口/选项卡打开,然后原始窗口/选项卡关闭时,可能会导致不需要的视觉瑕疵;破坏浏览器历史记录)?)


    如果可能的话,让最终目的地站点在事务完成时通知您几乎肯定是最好的方式。

    无法判断表单提交后会发生什么。它会重新加载页面,您的脚本将停止运行。如果用户被重定向到另一个站点(而不仅仅是同一站点上的另一个页面),Cookie将不适用于#3,因为Cookie是特定于站点的。除非浏览器有严重的安全缺陷,否则它不会向设置cookie的站点以外的任何站点发送cookie。是的,我知道。但我认为有些人无法实现html表单,无法通过cgi将值传递给后端脚本,即使他写了“另一个站点”。。他可能正试图实现一个登录会员区系统。但我想我会编辑这两个问题的答案。谢谢